数值的扩展

概述

ES6提供了许多新的数值的扩展

二进制和八进制表示法

二进制使用前缀0b或0B,八进制使用前缀0o或0O

ex:

0b111110111 === 503 // true
0o767 === 503 // true

如果要将0b0o前缀的字符串数值转为十进制,要使用Number方法。

ex:

Number('0b111')  // 7
Number('0o10')  // 8

Number

1.Number.isFinite()用来检查一个数值是否为有限的(finite),对于非数值一律返回false。

2.Number.isNaN()用来检查一个值是否为NaNNumber.isNaN()只有对于NaN才返回true,非NaN一律返回false。

以上两个方法与传统的全局方法isFinite()isNaN()的区别在于,传统全局方法先调用Number()将非数值的值转为数值,再进行判断,而以上两个新方法只对数值有效。

isFinite(25) // true
isFinite("25") // true
Number.isFinite(25) // true
Number.isFinite("25") // false

isNaN(NaN) // true
isNaN("NaN") // true
Number.isNaN(NaN) // true
Number.isNaN("NaN") // false
Number.isNaN(1) // false

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

// 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

4.Number.isInteger()用来判断一个值是否为整数。但是注意15和15.0被视为同一个值。

Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.1) // false
Number.isInteger("15") // false
Number.isInteger(true) // false

Math对象

1.Math.trunc()

Math.trunc方法用于去除一个数的小数部分,返回整数部分。对于非数值,先用Number()方法转化为数值,对于空值和无法截取整数的值,返回NaN

ex:

 

Math.trunc(4.1) //4
Math.trunc(-4.1) //-4

Math.trunc('3.1415') //3

Math.trunc(NaN) //NaN
Math.trunc('foo') //NaN
Math.trunc() //NaN

2.Math.sign()

Math.sign()方法判断一个数是正数,负数,还是0.非数值先转换为数值

  • 参数为正数,返回+1
  • 参数为负数,返回-1
  • 参数为0,返回0
  • 参数为-0,返回-0
  • 其他值,返回NaN
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
Math.sign('9'); // +1
Math.sign('foo'); // NaN
Math.sign();      // NaN

3.Math.cbrt()

该方法用于计算一个数的立方根。同样,非数值先转换为数值。

参考资料

1.阮一峰《ES6入门》

 

  

 

posted @ 2017-09-11 16:16  这是你的后会无期  阅读(139)  评论(0编辑  收藏  举报