二進制和八進制的表示法
二進制和八進制的新寫法:前綴0b(或0B)和0o(或 0O)標示
ES5嚴格模式下,八進制不允許使用前綴0表示
ES6進一步明確使用前綴0o表示
// 非嚴格模式
(function(){
console.log(0o11 === 011);
})() // true
// 嚴格模式
(function(){
'use strict';
console.log(0o11 === 011);
})() // Uncaught SyntaxError: Octal literals are not allowed in strict mode
- 0b和0o前綴的字符串數值轉十進制,要使用Number方法
Number('0b111');//7
Number('0o10'); //8
Number.isFinite(),Number.isNaN()
- Number.isFinite()用來檢查一個數值是否爲有限的(finite),即不是Infinity
console.log(Number.isFinite(15)); //true
console.log(Number.isFinite(0.8));; //true
console.log(Number.isFinite(NaN));; //false
console.log(Number.isFinite(Infinity));;//false
console.log(Number.isFinite(-Infinity));;//false
console.log(Number.isFinite('false'));; //false
console.log(Number.isFinite('15')); //false
console.log(Number.isFinite(true)); //false
- Number.isNaN()用來檢查一個值是否爲NaN。
console.log(Number.isNaN(NaN)); //true
console.log(Number.isNaN(15)); //false
console.log(Number.isNaN('15'));//false
console.log(Number.isNaN(true));//false
console.log(Number.isNaN(9 / NaN));//true
console.log(Number.isNaN('true' / 0));//true
console.log(Number.isNaN('true' / 'true'));//true
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
ps:以上兩個Number新方法針對傳統全局的isFinite()和isNaN()的區別爲,
傳統方法先調用Number()將非數值轉爲數值,再進行判斷
新方法只對數值有效,對於非數值的一律爲false
Number.parseInt(),Number.parseFloat()
// ES5的寫法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45
// ES6的寫法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45
// 這樣做的目的,是逐步減少全局性方法,使得語言逐步模塊化。
Number.parseInt === parseInt // true
Number.parseFloat === parseFloat // true
Number.isInteger()
- Number.isInteger()用來判斷一個數值是否爲整數。
Number.isInteger(25) // true
Number.isInteger(25.1) // false
# JavaScript 內部,整數和浮點數採用的是同樣的儲存方法,所以 25 和 25.0 被視爲同一個值。
Number.isInteger(25) // true
Number.isInteger(25.0) // true
# 如果參數不是數值,Number.isInteger返回false。
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger('15') // false
Number.isInteger(true) // false
如果對數據精度的要求較高,不建議使用Number.isInteger()判斷一個數值是否爲整數
5E-325由於值太小,會被自動轉爲0,因此返回true