字符串的正则方法 数值的扩展

字符串对象共有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^532^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_INTEGERNumber.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

上面代码中,两个运算结果的最后一位有效数字是有差异的。

 

posted on 2017-06-08 16:24  半夏微澜ぺ  阅读(211)  评论(0)    收藏  举报