ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b
(或0B
)和0o
(或0O
)表示。模块化
二进制声明:code
二进制的英文单词是Binary
,二进制的开始是0
(零),而后第二个位置是b
(注意这里大小写均可以实现),而后跟上二进制的值就能够了。对象
let binary = 0B010101; console.log(binary); //21
八进制声明:ip
八进制的英文单词是Octal
,也是以0
(零)开始的,而后第二个位置是O
(欧),而后跟上八进制的值就能够了。it
let b=0o666; console.log(b); //438
ES6 在Number
对象上,新提供了Number.isFinite()
和Number.isNaN()
两个方法。console
Number.isFinite()
用来检查一个数值是否为有限的(finite
)。二进制
能够使用Number.isFinite( )
来进行数字验证,只要是数字,不管是浮点型仍是整形都会返回true
,其余时候会返回false
方法
Number.isFinite(15); // true Number.isFinite(0.8); // true Number.isFinite(NaN); // false Number.isFinite(Infinity); // false Number.isFinite(-Infinity); // false Number.isFinite('foo'); // false Number.isFinite('15'); // false Number.isFinite(true); // false
Number.isNaN()
用来检查一个值是否为NaN
。英文
Number.isNaN(NaN) // true Number.isNaN(15) // false Number.isNaN('15') // false Number.isNaN(true) // false
它们与传统的全局方法isFinite()
和isNaN()
的区别在于,传统方法先调用Number()
将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,语言
Number.isFinite()
对于非数值一概返回false
, Number.isNaN()
只有对于NaN
才返回true
,非NaN
一概返回false
.
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
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.isInteger()
用来判断一个值是否为整数。须要注意的是,在 JavaScript
内部,整数和浮点数是一样的储存方法,因此 3
和 3.0
被视为同一个值。
Number.isInteger(25) // true Number.isInteger(25.0) // true Number.isInteger(25.1) // false Number.isInteger("15") // false Number.isInteger(true) // false
Math.trunc
方法用于去除一个数的小数部分,返回整数部分。
Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.trunc(-4.1) // -4 Math.trunc(-4.9) // -4 Math.trunc(-0.1234) // -0
对于非数值,Math.trunc
内部使用Number
方法将其先转为数值。
Math.trunc('123.456') // 123 Math.trunc(true) //1 Math.trunc(false) // 0 Math.trunc(null) // 0