1 JavaScript基础:值,变量和控制流

1. JavaScript基础:值,变量和控制流

在计算机的世界内,只有数据(Data)——任何不是数据的东西都不存在。所有这些数据本质上都是bit序列,因为具有本质上的共性。bit代表具有二值性的任何事物,通常用0和1来表示。在计算机中,bit可以表现为电位的高或低,信号的强或弱,CD盘片表面的凹坑和非凹坑

值(Value)

尽管都是由一串bit位组成,不同的数据却有各自不同的功能。在JavaScript中,大部分数据都能被区分为不同的值(value)。 每个值都有类型,类型决定了这些值的功能。有6种基本类型的值:number,string,Boolean, object, function,还有undifined
要创建一个值,只需要指定它的名字。这非常方便,你无需关注细节;只需要说:我要一个值,然后——嗖——你就有这个值了。它们当然不是凭空产生的。每一个值都必须有存储空间,如果你想一次使用大量的值,可能会耗尽内存空间。幸运的是,这种情况仅发生在你同时使用很多值的时候。当你不再使用一个值的时候,它就会被清理掉,留出空间,在下一次创建一个值时使用(垃圾回收)。

number类型

number类型的值就是数字值(numeric value), 它的书写形式就如同我们平常书写数字:

144 

这将在计算机中创造一个数字144。数字144的bit表示可能是下面这样子:

0100000001100010000000000000000000000000000000000000000000000000

你可能认为数字144的bit表示应该是10010000(因为这是整型值144的表示)。不错,在某些情况下可能真的是这样表示的。不过在JavaScript标准的描述中 number类型的值是64位的浮点值 。这意味着number也包含小数值和指数值。
然而我们不打算在这里大谈二进制表示。我们在意的是这种表示方式对我们实际编程中的影响。首先是,一个number由有限的bit位所表示,所以它只能有有限的精度。一组64个1/0值能代表264个不同的数值。超过1019
然而并非1019以下的数字都能对应一个number类型值。首先,存在负数,所以需要一个bit来存储符号位。更重要的是还需要能表示非整数,所以又需要11个bit位来保存小数点的位置。
这样就只剩下52位了(事实上是53位,因为使用一个小伎俩可以免费再创造一位出来,详情参见IEEE754标准)。任何小于215的整数都可以用number类型完美匹配。在大多数情况下我们使用的数值都小于这个上限。
小数用带小数点的数字来书写:

9.81 

对于很大和很小的数值,可以用科学计数法来书写,在数字后面添加e,并写上指数值:

2.998e8 

这个数代表2.998 × 108 = 299800000。
整数运算的结果只要在52bit位的范围内总是精确的。然而,小数运算通常不能保证精确。正如 π不能被有限位数的十进制小数精确表示,当仅仅使用64位来存储它们时,许多数值会损失一些精度。不过只有在非常特殊的情形下才会引发实际的问题。重要的是我们要时刻警惕它并认识到小数数值只是一种近似值而非精确值

数值运算

number类型主要用于数学运算。数学操作符加和乘接收两个操作数并产生一个新数值。数值运算符写法如下:

100 + 4 * 11 

+和*被称为操作符,分别代表加和乘。将一个运算符放在两个值中间会使得该运算符应用于这两个值,并产生一个新的值。
乘法运算在加法之前进行,但是跟数学中一样,可以使用小括号改变运算顺序:

(100 + 4 ) * 11 

减法和除法分别用 - 和 / 表示。当没有小括号的时候,它们的运算顺序由操作符的优先级决定。例子中乘的优先级高于加。除和乘具有相同的优先级,加和减具有相同的优先级。当具有相同优先级的操作符共享一个操作数的时候,运算由左向右进行。
你不需要关注优先级,任何时候不确定的时候都可以加小括号
%代表取模运算符,X%Y的结果是X/Y的余数。例如,314%100是14,10%3是1,144%2是0。模运算的优先级与乘除相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值