字符串对象共有4个方法,可以使用正则表达式:match() replace() search()和split()
regExp.test(string)
在string中找到匹配regExp的字符串则返回true,没有找到匹配regExp的字符串则返回false
数值的扩展
ES6在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法;
Number.isfinite()用来检测一个数值是否为有限的。
Number.isNaN()用来检测一个值是否为NaN
Number.parseInt() 和Number.parseFloat
ES6将全局方法parseInt()和parseFloat(),移动到Number对象上面,行为完全保持不变。这样做的目的,是逐步减少全局性方法,使得语言逐步模块化
Number.isInteger()
Number.isInteger()用来判断一个值是否为整数。在javascript内部,整数和浮点数是同样的存储方法。
误差检测函数
Number.EPSILON
ES6在Number对象上面,新增一个极小的常量Number.ESPILON.
引入一个极小的量的目的,在于为浮点数计算,设置一个误差范围。我们知道浮点数的计算是不精确的。
但是这个误差能够小于Number.EPSILON,我们就可以认为得到了正确结果。
因此,Number.EPSILON
的实质是一个可以接受的误差范围。
安全整数和Number.isSafeInteger()
JavaScript能够准确表示的整数范围在-2^53
到2^53
之间(不含两个端点),超过这个范围,无法精确表示这个值。
Math.pow(2, 53) // 9007199254740992 9007199254740992 // 9007199254740992 9007199254740993 // 9007199254740992 Math.pow(2, 53) === Math.pow(2, 53) + 1 // true
上面代码中,超出2的53次方之后,一个数就不精确了。
ES6引入了Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
这两个常量,用来表示这个范围的上下限。
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1 // true Number.MAX_SAFE_INTEGER === 9007199254740991 // true Number.MIN_SAFE_INTEGER === -Number.MAX_SAFE_INTEGER // true Number.MIN_SAFE_INTEGER === -9007199254740991 // true
上面代码中,可以看到JavaScript能够精确表示的极限。
Number.isSafeInteger()
则是用来判断一个整数是否落在这个范围之内。
指数运算符
ES2016 新增了一个指数运算符(**
)。
2 ** 2 // 4 2 ** 3 // 8
指数运算符可以与等号结合,形成一个新的赋值运算符(**=
)。
let a = 1.5; a **= 2; // 等同于 a = a * a; let b = 4; b **= 3; // 等同于 b = b * b * b;
注意,在 V8 引擎中,指数运算符与Math.pow
的实现不相同,对于特别大的运算结果,两者会有细微的差异。
Math.pow(99, 99) // 3.697296376497263e+197 99 ** 99 // 3.697296376497268e+197
上面代码中,两个运算结果的最后一位有效数字是有差异的。