日期:2014-05-16  浏览次数:20346 次

雄辩的JavaScript第二章(经典翻译计划1)

?

第二章:JavaScript基础:值,变量和控制流

?

在电脑世界中,只有数据:除数据之外的东西是不存在的。虽然,本质上,所有数据都是由0-1比特位组成的序列,但是每一块数据都有自身的作用。在JavaScript中这些数据被整齐地区隔为值,每一个值的类型决定了它可以扮演的角色,JavaScript中有6种基本类型的值:数、字符串、布尔值、对象、函数和undefined

?

创建一个值,你只需要创建它的名字。非常方便是吧!你不用去找创建值的材料,没有一点成本,仅仅召唤一句:我要一个值!嗖的一声,你就拥有了一个值。当然,这些值不是从真空中产生的,每一个值必须存放在某处,如果你在一个时间点进行大数量级地调用,很快电脑的内存将会被耗尽。不过还好,这种问题只会在同步调用大量的数据时发生,一旦你不再使用一个值了,它将会被驱散掉,留下几个比特的尸体,这些尸体会在下一轮值的创建中被回收利用。

?

?

数字类型的值,像下面这样表示,估计你已经知道了。

?

114

?

JavaScript控制台中输入它,同样的数字会在输出窗口中显示出来。过程这样的:你所输入的字面量被转化为了一个数字类型的值,然后JavaScript控制台将这个数值写回屏幕。做点练习?意义似乎不大,很快我们将会学到不用这么直接的方式去创建数值,那个时候再去JavaScript控制台中试试吧。

?

114的比特串是这个样子的:

?

0100000001100010000000000000000000000000000000000000000000000000

?

一共64个比特位。JavaScript的数值总是占用这个长度,所以可表达的数的范围在JavaScript中是有限的。3个十进制的数位,仅仅可以表示0999,一共10^3个数。64个二进制数码,2^64个数,其实已经很多了,比10^9还要大(1的后面跟190)。

?

当然并不是小于10^19的数都可以表示,因为还有负数呢!必须牺牲一个比特位来保存符号。问题来了,不是所有范围的数都可以表示,除此之外我们还要占用另外11个比特,去储存十进制数码间的小数点。

?

这么看来只剩下52位了。所以表示的范围小于2^52,这个数量级比10^15要大,这个范围内的数值在JavaScript中是安全的。在许多情形中,涉及到的整数都在这个范围内,所以我们完全不用在意这些比特的细节。还不错吧,但是我们没有对付比特位特别有效的办法,许多时候你还是需要它们来帮助你完成你的工作的,它们对表示大数特别有效