数值的扩展
二进制和八进制表示法
ES6提供了二进制和八进制数值的新的写法,分别用前缀0b
(或0B
)和0o
(或0O
)表示。从ES5开始,在严格模式之中,八进制就不再允许使用前缀0
表示,ES6进一步明确,要使用前缀0o
表示。
Number.isFinite(), Number.isNaN()
ES6在Number对象上,新提供了Number.isFinite()
和Number.isNaN()
两个方法,用来检查Infinite
和NaN
这两个特殊值。Number.isFinite()
用来检查一个数值是否非无穷(infinity)。Number.isNaN()
用来检查一个值是否为NaN。
Number.parseInt(), Number.parseFloat()
ES6将全局方法parseInt()
和parseFloat()
,移植到Number对象上面,行为完全保持不变。这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。
|
|
Number.isInteger()
Number.isInteger()
用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值。
|
|
Number.EPSILON
ES6在Number对象上面,新增一个极小的常量Number.EPSILON
。引入一个这么小的量的目的,在于为浮点数计算,设置一个误差范围。我们知道浮点数计算是不精确的。
但是如果这个误差能够小于Number.EPSILON,我们就可以认为得到了正确结果。因此,Number.EPSILON的实质是一个可以接受的误差范围。
安全整数和Number.isSafeInteger()
JavaScript能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。
|
|
ES6引入了Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
这两个常量,用来表示这个范围的上下限。
Number.isSafeInteger()
则是用来判断一个整数是否落在这个范围之内。
Math对象的扩展
- Math.trunc()
Math.trunc
方法用于去除一个数的小数部分,返回整数部分。对于非数值,Math.trunc
内部使用Number
方法将其先转为数值。对于空值和无法截取整数的值,返回NaN
。
- Math.sign()
Math.sign方法用来判断一个数到底是正数、负数、还是零。
- Math.cbrt()
Math.cbrt
方法用于计算一个数的立方根。
- Math.clz32()
JavaScript的整数使用32位二进制形式表示,Math.clz32
方法返回一个数的32位无符号整数形式有多少个前导0。
|
|
- Math.imul()
Math.imul
方法返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。
|
|
- Math.fround()
Math.fround方法返回一个数的单精度浮点数形式。
- Math.hypot()
Math.hypot方法返回所有参数的平方和的平方根。
对数方法
- Math.expm1()
Math.expm1(x)
返回ex - 1
,即Math.exp(x) - 1
。
- Math.log1p()
Math.log1p(x)
方法返回1 + x
的自然对数,即Math.log(1 + x)
。如果x
小于-1
,返回NaN
。
|
|
- Math.log10()
Math.log10(x)
返回以10为底的x的对数。如果x小于0,则返回NaN
。
- Math.log2()
Math.log2(x)
返回以2为底的x的对数。如果x小于0,则返回NaN
。
|
|
三角函数方法
ES6新增了6个三角函数方法。
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)
指数运算符
ES7
新增了一个指数运算符(**),目前Babel转码器已经支持。
|
|
文章参考ECMAScript 6 入门