1. 二进制和八进制
用前缀0b
(或0B
)和0o
(或0O
)表示。
0b111110111 === 503 // true
0o767 === 503 // true
// 非严格模式
(function(){
console.log(0o11 === 011);
})() // true
// 严格模式
(function(){
'use strict';
console.log(0o11 === 011);
})()
如果要将0b
和0o
前缀的字符串数值转为十进制,要使用Number
方法。
Number('0b111') // 7
Number('0o10') // 8
2. 数值分隔符
ES2021,允许 JavaScript 的数值使用下划线(_)作为分隔符。
数值分隔符有几个使用注意:
- 不能放在数值的最前面(leading)或最后面(trailing)。
- 不能两个或两个以上的分隔符连在一起。
- 小数点的前后不能有分隔符。
- 科学计数法里面,表示指数的
e
或E
前后不能有分隔符。
let budget = 1_000_000_000_000;
budget === 10 ** 12 // true
123_00 === 12_300 // true
12345_00 === 123_4500 // true
12345_00 === 1_234_500 // true
// 小数
0.000_001
// 科学计数法
1e10_000
3. Number.isFinite(), Number.isNaN()
Number.isFinite()
用来检查一个数值是否为有限的
Number.isNaN()
用来检查一个值是否为
NaN
//isFinite
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
//isNaN
Number.isNaN(NaN) // true
Number.isNaN(15) // false
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true' / 0) // true
Number.isNaN('true' / 'true') // true
4. Number.parseInt(), Number.parseFloat()
将全局方法
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
5. Number.isInteger()
Number.isInteger()
用来判断一个数值是否为整数
Number.isInteger(25) // true
Number.isInteger(25.1) // false
6. Number.EPSILON
新增一个极小的常量Number.EPSILON
。根据规格,它表示 1 与大于 1 的最小浮点数之间的差。