ES6 数值扩展

二进制和八进制表示法

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

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

注意 : 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示。

Number.isFinite(), Number.isNaN()

ES6在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法。

Number.isFinite()用来检查一个数值是否为有限的(finite)。

Number.isNaN()用来检查一个值是否为NaN。

<script>
console.log(Number.isFinite(0.01));
console.log(Number.isFinite("No"));
console.log(Number.isNaN("ok"));
</script>

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.isInteger() 和 Number.isSafeInteger()

Number.isInteger()用来判断一个值是否为整数。

Number.isSafeInteger() 用来判断安全整数。JavaScript能够准确表示的整数范围在-2^532^53之间(不含两个端点),超过这个范围,无法精确表示这个值。

Math对象的扩展

ES6在Math对象上新增了17个与数学相关的方法。所有这些方法都是静态方法,只能在Math对象上调用。

Math.trunc()

Math.trunc方法用于去除一个数的小数部分,返回整数部分。

Math.trunc(6.1) // 6
Math.trunc(9.9) // 9

对于非数值,Math.trunc内部使用Number方法将其先转为数值。

Math.trunc('123.456') // 123

Math.sign()

Math.sign方法用来判断一个数到底是正数、负数、还是零。

它会返回五种值。

参数为正数,返回+1;

参数为负数,返回-1;

参数为0,返回0;

参数为-0,返回-0;

其他值,返回NaN。

Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
Math.sign('foo'); // NaN
Math.sign();      // NaN

指数运算符

ES2016 新增了一个指数运算符(**)。

<script>
let a = 2;
let b = 2;
a = a ** 2;
b = b ** 3;
console.log(a, b);
</script>

指数运算符可以与等号结合,形成一个新的赋值运算符(**=)。

<script>
let a = 2;
let b = 2;
a **= 2;
b **= 3;
console.log(a, b);
</script>