1、Number.isFinite(),Number.isNaN()
isFinite()用于检查一个数值是否为有限的,即不是Infinity;
isNaN()用于检查一个值是否为NaN。
这两个新方法只对数值有效,不会进行转换。
2、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.parseInt === parseInt // true
Number.parseFloat === parseFloat // true
3、Number.isInteger()
用来判断一个数值是否为整数。
Number.isInteger(25) // true
Number.isInteger(25.1) // false
JavaScript 内部,整数和浮点数采用的是同样的储存方法,所以 25 和 25.0 被视为同一个值。
Number.isInteger(25) // true
Number.isInteger(25.0) // true
如果参数不是数值,Number.isInteger返回false。
由于 JavaScript 采用 IEEE 754 标准,数值存储为64位双精度格式,数值精度最多可以达到 53 个二进制位(1 个隐藏位与 52 个有效位)。如果数值的精度超过这个限度,第54位及后面的位就会被丢弃,这种情况下,Number.isInteger可能会误判。
Number.isInteger(3.0000000000000002) // true
4、Math对象的扩展
Math.trunc()
用于去除一个数的小数部分,返回整数部分。
对于非数值,Math.trunc内部使用Number方法将其先转为数值。
对于空值和无法截取整数的值,返回NaN。
Math.sign()
用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
它会返回五种值。
参数为正数,返回+1;
参数为负数,返回-1;
参数为 0,返回0;
参数为-0,返回-0;
其他值,返回NaN。
Math.cbrt()
用于计算一个数的立方根。
Math.clz32()
参数转为 32 位无符号整数的形式,然后这个 32 位值里面有多少个前导 0。
Math.hypot()
返回所有参数的平方和的平方根
对数方法:
Math.expm1()
返回 ex - 1,即Math.exp(x) - 1。
Math.log1p()
方法返回1 + x的自然对数,即Math.log(1 + x)。如果x小于-1,返回NaN。
Math.log10()
返回以 10 为底的x的对数。如果x小于 0,则返回 NaN。
Math.log2()
返回以 2 为底的x的对数。如果x小于 0,则返回 NaN。
双曲函数方法
-Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)
-Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
-Math.tanh(x) 返回x的双曲正切(hyperbolic tangent)
-Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine)
-Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine)
-Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)
指数运算符(**)
右结合