ECMAScript6--04

数值的扩展方法

Number.isFinite()、Number.isNaN()

  • 在数值上提供这两种方法来检查infinite和NaN这两个特殊值。
  • 它们和传统的全局方法isFinite和isNaN方法的区别在于,传统方法先调用Number将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,非数值一律返回false。

Number.parseInt()、Number.parseFloat()

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

Number.isInteger()

该方法用来判断一个值是否是整数。特别注意的是:再js内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值

完全整数和Number.isSafeInteger()

  • js能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,就无法精确表示这个值。
  • ES6引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。
  • Number.isSafeInteger()是用来判断一个整数是否是落在这个范围之内
  • 注意:验证运算结果是否落在安全整数范围时,不要只验证运算结果,而要同时验证参与运算的每个值Number.isSafeInteger(Number.MAX_SAFE_INTEGER - 1) //false

Math对象的扩展

  • Math.trunc方法用于去除一个数的小数部分,返回整数部分;对于非数值,Math.trunc内部使用Number方法将其先转为数值,对于空值和无法截取整数的值,返回NaN
  • Math.sign方法用来判断一个数到底是正数、负数还是零。它会返回五种值:
    • 参数为正数,返回+1
    • 参数为负数,返回-1
    • 参数为0,返回0
    • 参数为-0,返回-0
    • 其他值,返回NaN
  • Math.cbrt方法用于计算一个数的立方根,对于非数值,Math.cbrt方法内部也是先使用Number方法将其转为其他数值
  • Math.clz32:js的整数使用32位二进制表示,Math.clz32方法返回一个数的32位无符号整数形式有多少个前导0(也就是第一个非零数之前的零的个数)
  • Math.imul方法返回了两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数Math.imul(2,-2) //-4。如果只考虑最后32位,大多数情况下,该方法域a* b的结果是一样的,该方法等同于(a* b)|0的效果(超过32位的溢出)。之所以需要这个方法,是因为js有精度限制,超过2的53次方的值无法精确表示。这就是说,对于哪些很大数的乘法,低位数值往往都是不精确的,而该方法可以返回正确的低位数值
  • Math.found方法返回一个数的单精度浮点数形式。对于整数来说,Math.found方法返回结果不会有任何不同,区别主要是哪些无法使用64个二进制位精确表示的小数。这时,Math.found方法会返回最接近这个小数的单精度浮点数。
  • Math.hypot方法返回所有参数的平方和的平方根Math.hypot(3,4)//5如果参数不是数值,Math.hypot先将其转为数值。只要有一个参数无法转为数值,就会返回NaN
  • Math.expml返回e^x-1即Math.exp(x)-1
  • Math.log1p返回l+x的自然对数,即Math.log(1+x)。如果x小于-1,返回NaN
  • Math.log0返回以10为底 的x的对数。如果x小于0,则返回NaN
  • Math.log2返回以2为底的x的对数。如果x小于零,则返回NaN
  • 三角函数方法
    • Math.sinh(x)返回x的双曲正弦
    • Math.cosh(x)返回x的双曲余弦
    • Math.tanh(x)返回x的双曲正切
    • Math.asinh(x)返回x的反双曲正弦
    • Math.acosh(x)返回x的反双曲余弦
    • Math.atanh(x)返回x的反双曲正切

指数运算符

ES7新增了一个指数运算符(** ),目前Babel转码器已经支持

1
2
2 ** 2 //4
2 ** 3 //8

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

1
2
3
let b=3
b** =3
//等同于b=b*b*b
-------------本文结束感谢您的阅读-------------