1.二進(jìn)制和八進(jìn)制表示法
ES6 提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫(xiě)法丙唧,分別用前綴0b(或0B)和0o(或0O)表示想际。
2.Number.isFinite(), Number.isNaN()
ES6 在Number對(duì)象上畸悬,新提供了Number.isFinite()和Number.isNaN()兩個(gè)方法咒锻。
Number.isFinite()用來(lái)檢查一個(gè)數(shù)值是否為有限的(finite)滨巴,即不是Infinity。
Number.isFinite(1); // true
Number.isFinite(0.1); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('hello'); // false
Number.isFinite('1'); // false
Number.isFinite(true); // false
注意柠横,如果參數(shù)類型不是數(shù)值烟阐,Number.isFinite一律返回false。
Number.isNaN()用來(lái)檢查一個(gè)值是否為NaN。
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(1)); // false
console.log(Number.isNaN('1')); // false
console.log(Number.isNaN(true)); // false
console.log(Number.isNaN(1/NaN)); // true
console.log(Number.isNaN('true' / 0)); // true
console.log(Number.isNaN('true' / 'true')); // true
如果參數(shù)類型不是NaN,Number.isNaN一律返回false。
它們與傳統(tǒng)的全局方法isFinite()和isNaN()的區(qū)別在于,傳統(tǒng)方法先調(diào)用Number()將非數(shù)值的值轉(zhuǎn)為數(shù)值菇曲,再進(jìn)行判斷喊式,而這兩個(gè)新方法只對(duì)數(shù)值有效,Number.isFinite()對(duì)于非數(shù)值一律返回false, Number.isNaN()只有對(duì)于NaN才返回true检柬,非NaN一律返回false。
3.Number.parseInt(), Number.parseFloat()
ES6 將全局方法parseInt()和parseFloat()原押,移植到Number對(duì)象上面诸衔,行為完全保持不變帖渠。
4.Number.isInteger()
Number.isInteger()用來(lái)判斷一個(gè)數(shù)值是否為整數(shù)。
console.log(Number.isInteger(1)); // true
console.log(Number.isInteger(1.1)); // false
如果參數(shù)不是數(shù)值入愧,Number.isInteger返回false
注意巩步,由于 JavaScript 采用 IEEE 754 標(biāo)準(zhǔn)竟闪,數(shù)值存儲(chǔ)為64位雙精度格式理朋,數(shù)值精度最多可以達(dá)到 53 個(gè)二進(jìn)制位(1 個(gè)隱藏位與 52 個(gè)有效位)斜友。如果數(shù)值的精度超過(guò)這個(gè)限度鲜屏,第54位及后面的位就會(huì)被丟棄也殖,這種情況下捆毫,Number.isInteger可能會(huì)誤判何暇。
console.log(Number.isInteger(3.0000000000000002)); // true