6.1 二进制和八进制表示法
ES6提供了二进制和八进制数值的新写法,分别用前缀0b和0o表示。
0b111110111 === 503 //true
0o767 === 503 //true
从ES5开始,在严格模式中,八进制数值就不再运行使用前缀0表示,ES6进一步明确,要使用前缀0x表示。
//非严格模式
(function() {
console.log(0o11 === 011);
})() //true
//严格模式
(function() {
'use strict'
console.log(0o11 === 011);
})()
//Uncaught SntaxError
如果要使用0b和0x前缀的字符串数值转为十进制数值,要使用Number方法。
Number('0b111'); //7
Number('0o10'); 8
6.2 Number.isFinite(),Number.isNaN()
ES6在Number对象上新提供了Number.isFinite()和Number.isNaN()两个方法。
Number.isFinite()用来检查一个数值是否为有限的。
Number.isFinite(15); //true
Number.isFinite(0.6); //true
Number.isFinite(NaN); //false
Number.isFinite(Infinity); //false
Number.isFinite(-Infinity); //false
Number.isFinite('foo'); //false
Number.isNaN()用来检查一个值是否为NaN。
Number.isNaN(NaN); //true
Number.isNaN(15); //false
Number.isNaN('15'); //false
Number.isNaN(9/NaN); //true
Number.isNaN('true'/0); //true
6.3 Number.parseInt(),Number.parseFloat()
ES6将全局方法parseInt()和parseFloat()移植到了Number对象上面,行为完全保持不变。
这样做的目的是逐步减少全局性方法,使得语言逐步模块化。
Number.parseInt === parseInt //true
Number.parseFloat === parseFloat //true
6.4 Number.isInteger()
Number.isInteger()用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的存储方法,所以3和3.0被视为同一个值。
Number.isInteger(25); //true
Number.isInteger(25.0); //true
Number.isInteger(25.1); //true
6.5 Number.EPSILON
ES6在Number对象上面新增了一个极小的常量—Number.EPSILON。
引入一个这么小的量,目的在于为浮点数计算设置一个误差范围。
function withinErrorMargin(left, right) {
return Math.abs(left-right) < Number.EPSILON;
}