ES6在Number对象上,提供了新的方法去操作数值。
(1)Number.isFinite():用来检测一个数值是否为有限的(finite),即不是Infinity。返回布尔值
如果参数类型不是数值,一律返回false。
Number.isFinite(15); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite('abc'); // false
Number.isFinite('15'); // false
(2)Number.isNaN():检测一个值是否为NaN,返回布尔值
Number.isNaN(NaN); // true
Number.isNaN(10); // false
Number.isNaN('10'); // false
Number.isNaN(true); // false
Number.isNaN(10/NaN); // true
Number.isNaN('true'/0); // true
Number.isNaN('true'/'true'); // true
与传统的全局方法isFinite()和isNaN()不同的是,传统方法先调用Number()将非数值的值转换为数值,再进行判断,而ES6这两个方法只对数值有效。
(3)Number.isInteger():判断一个数值是否为整数
Number.isInteger(); // false
Number.isInteger(null); // false
Number.isInteger('15'); // false
Number.isInteger(true); // false
Number.isInteger(11); // true
Math对象的扩展
(1)Math.trunc():去除一个数的小数部分,返回整数部分
对于非数值,先转为数值。对于空值和无法截取整数的值,返回NaN
Math.trunc(NaN); // NaN
Math.trunc('foo'); // NaN
Math.trunc(); // NaN
Math.trunc(undefined); // NaN
Math.trunc('123.456') // 123
Math.trunc(true) //1
(2)Math.sign():判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
参数为整数返回+1;负数返回-1;0返回0;-0返回-0;其他值返回NaN
(3)Math.cbrt():计算一个数的立方根
对于非数值,会先将其转换为数值;无法转换返回NaN
(4)Math.hypot():返回所有参数的平方和的平方根
对于非数值,会先将其转换为数值;只要有一个参数无法转为数值,就会返回 NaN
指数运算符
ES6 新增了一个指数运算符(**)
这个运算符的一个特点是右结合,而不是常见的左结合。多个指数运算符连用时,是从最右边开始计算的。
2 ** 2 // 4
2 ** 3 // 8
2 ** 3 ** 2 // 相当于2**(3**2) 512
可以和等号结合
let a=10,b=2;
a**=b // 相当于a=a**b 100