-
八进制与二进制
在es5中,严格模式下,不再允许0o 0O (八进制)或者 0b 0B(二进制)这种表示八进制或二进制的写法。
es6在此对此功能进行了完善
0b111110111 === 503
0o767 === 503
es5开始,严格模式中,不再允许这样表示,但es6此改善了
// 非严格模式
(function(){
console.log(0o11 === 011);
})() // true
// 严格模式
(function(){
'use strict';
console.log(0o11 === 011);
})() // Uncaught SyntaxError: Octal literals are not allowed in strict mode.
如果想将0o 或者 0b 转换为十进制,只需使用Number方法
Number('0b111');
Number('0o333');
-
Number.isFinite(), Number.isNaN()
isFinite()方法就是判断这个数,是不是有限的(finite)即不是Infinity。
Number.isFinite(15); // true
Number.isFinite(1.5); // 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
只要参数不是数字,一律返回false
isNaN()方法检测一个数,是否为NaN
Number.isNaN(NaN) // true
Number.isNaN(1) // flase
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9 / NaN) // true
Number.isNaN('true' / 0) // true
Number.isNaN('true' / 'true') // true
Number.isNaN(null) // false
Number.isNaN(undefined) // false
参数结果只要不是NaN, isNaN()就会返回false
传统的isFinite和isNaN 会先调用包装类把参数转换为数字,再进行比较,而Number.isFinite和isNaN 只要参数不是数字就返回false
下面对比一下
isFinite(Infinity); // false
isFinite(true); // true
isFinite('25'); // true
isFinite(25); // true
Number.isFinite(Infinity); // false
Number.isFinite(true); // false
Number.isFinite('25')l // false
Number.isFinite(25); // true
isNaN(NaN)