天天看点

【ES6】ES6学习六:数值的扩展

一、二进制和八进制表示法

ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。

0b111110111 === 503 // true
0o767 === 503 // true
           

如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。

Number('0b111')  // 7
Number('0o10')  // 8
           

二、Number.isFinite()、Number.isNaN()

1、Number.isFinite():用来检查一个数值是否为有限的。如果参数类型不是数值,一律返回false。

Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
           

2、Number.isNaN():用来检查一个值是否为NaN。如果参数类型不是NaN,Number.isNaN一律返回false。

Number.isNaN(NaN) // true
Number.isNaN(9/NaN) // true
Number.isNaN(15) // false
Number.isNaN('15') // false
Number.isNaN(true) // false
           

三、Number.isInteger()

用来判断一个数值是否为整数。如果参数不是数值,Number.isInteger返回false。

Number.isInteger(25) // true
Number.isInteger(25.1) // false
Number.isInteger('15') // false
           

 JavaScript 内部,整数和浮点数采用的是同样的储存方法,所以 25 和 25.0 被视为同一个值。

Number.isInteger(25) // true
Number.isInteger(25.0) // true
           

 说明:如果对数据精度的要求较高,不建议使用它来判断一个数值是否为整数。

四、Number.parseInt()、 Number.parseFloat()

ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。

// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45

// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45
           

五、Number.EPSILON

ES6 在Number对象上面,新增一个极小的常量Number.EPSILON。实际上是 JavaScript 能够表示的最小精度。误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。

es6