数字
JavaScript不区分整数值和浮点数值,
浮点数的范围是[-5*10^-324, 1.7976931348623157*10^308],
整数范围是[-2^53, 2^53]
需要注意的是,数字的索引值是基于32位整数的!!!
整型直接量
0
3
100000000
还可以是十六进制:
0xff // 255
0XCAF893
浮点型直接量
3.14
.33333
6.02e23 // 6.02*10^23
算数运算
+、-、*、/、%
另外,
Math.pow(2, 12) // 2^12
Maht.round(.6) // 四舍五入
Math.ceil(.6) // 向上取整
Math.floor(.6) // 向下取整
JavaScript在溢出、下溢或除零时不会报错!!!
1/0 // Infinity, Number.POSITIVE_INFINITY
0/0 // NaN, Number.NaN, not a number
Number.MIN_VALUE-1 // 发生下溢,0
二进制浮点数和四舍五入错误
由于浮点数的表示方法,决定了它可以精确的表示分数:1/2,1/4,1/16;但是不能精确表示1/10,1/100;
1 | var x = .3 - .2; |
这种情况同样适用于python、java、c++。
日期和时间
1 | var now = new Date(); |
文本
JavaScript采用UTF-16编码的Unicode字符集,没有像Java一样的Char类型,单个字符即是长度为1的字符串。
转义字符
1 | \n 换行符 |
字符串的使用
1 | var s = "hello, " + "world"; |
注意:replace()和toUpperCase()返回一个新的字符串,原字符串并未改变!
String Reference
模式匹配
1 | var text = 'testing: 1, 2, 3'; |
布尔值
下面这些值会被转换成false:
1 | undefined |
全局对象
类别 | 举例 |
---|---|
全局属性 | undefined,Infimity,NaN |
全局函数 | isNaN(),parseInt(),eval() |
构造函数 | Date(),RegExp(),String(),Object(),Array() |
全局对象 | Math,JSON |
包装对象
对象是值和方法的集合,通过**.**来访问。如下:
1 | var s = 'hello'; |
s是一个字符串类型(typeof查看),当用**.**来访问length或其它方法时,JavaScript就会通过new String(‘hello’)把s转换成了一个对象,访问完之后就被销毁。
1 | var s = 'test'; |
运行结果是t为undefined,并不是4;
存取数字、字符串、布尔值的属性创建的临时对象被称为包装对象。包装对象只是数字、字符串和布尔值的具体实现,不必在意,只要知道它与对象的区别即可。
不可变的原始值和可变的对象引用
与Java完全一致,数字、字符串和布尔值本身不可改变,对象指向同一个实例才是相等。