阮一峰es6要点总结——数值的扩展

笔记,完全摘录自阮一峰

1.

扩展Number内置对象上的方法

  • 扩展方法
  • 原全局方法,现挂载到Number对象,避免给全局对象暴露过多接口

  • Number.isFinite()Number.isNaN()

Number.isFinite(num)检测数值是否为无限
Number.isNaN(num)检测参数是否为NaN

与全局方法的区别
全局方法的处理方法是,先对参数调用Number()方法,转换为数值,再判断
新方法,Number.isFinite()对于非数值一律返回falseNumber.isNaN()只对于NaN返回true,非NaN一律返回false

  • Number.parseInt()Number.parsefloat()

原方法移植到Number对象上。

  • Number.isInteger()
    判断一个数,是否为整数。
    由于JavaScript整数,浮点数统一的存储方法,所以33.0被视为同一个值。

  • Number.EPSILON
    新增的一个极小常量,由于浮点数计算精度问题,导致计算不准确。
    当计算误差小于这个常量Number.EPSILON时候吗,我们可以认为,得到了正确结果。

  • Number.isSafeInterger()
    JavaScript的安全数范围是-2^532^53(不含端点)。
    ES6引入Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER来表示上下限。
    Number.isSafeInterger()来检测数值是否处于安全范围。

2.

Math对象的扩展

新增了17个方法

  • Math.trunc()
    取一个数的整数部分。
    非数值,调用Number()方法。
    无法取值或空值,返回NaN

  • Math.sign()
    来判断一个数到底是正数、负数、还是零。

  • 参数为正数,返回+1;

  • 参数为负数,返回-1;

  • 参数为0,返回0;

  • 参数为-0,返回-0;

  • 其他值,返回NaN。

  • Math.cbrt()
    计算一个数的立方根
    非数值调用Number()

  • Math.clz32()
    JavaScript整数也用32位二进制表示,Math.clz32()返回一个数的32位无符号整数形式有多少个前导0.

clz32这个函数名就来自”count leading zero bits in 32-bit binary representations of a number“(计算32位整数的前导0)的缩写。

对于小数,该方法只考虑整数部分。

其他类型数,Math.clz32会先将其转换数值。

Math.clz32() // 32
Math.clz32(NaN) // 32
Math.clz32(Infinity) // 32
Math.clz32(null) // 32
Math.clz32('foo') // 32
Math.clz32([]) // 32
Math.clz32({}) // 32
Math.clz32(true) // 31
  • Math.imul()
    返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。

用于解决过大数据(超过2的53次幂)相乘计算结果不正确的问题。

  • Math.fround()
    返回一个数的单精度浮点数形式。

对于整数来说,Math.fround方法返回结果不会有任何不同,区别主要是那些无法用64个二进制位精确表示的小数。这时,Math.fround方法会返回最接近这个小数的单精度浮点数。

  • Math.hypot()
    返回所有参数的平方和的平方根。
    如果参数不是数值,Math.hypot方法会将其转为数值。只要有一个参数无法转为数值,就会返回NaN

  • 对数方法

  • Math.expm1()
    返回e^x - 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)

好吧,感觉回到高数课堂了,,,不过,做图会方便很多吧。

二进制,八进制表示法

ES6明确规定,
二进制要用0b/0B前缀
八进制要用0o/0O前缀

推荐阅读更多精彩内容