ES6 提供了二進制和八進制數值的新的寫法,分別用前綴0b
(或0B
)和0o
(或0O
)表示。模塊化
二進制聲明:code
二進制的英文單詞是Binary
,二進制的開始是0
(零),而後第二個位置是b
(注意這裏大小寫均可以實現),而後跟上二進制的值就能夠了。對象
let binary = 0B010101; console.log(binary); //21
八進制聲明:ip
八進制的英文單詞是Octal
,也是以0
(零)開始的,而後第二個位置是O
(歐),而後跟上八進制的值就能夠了。it
let b=0o666; console.log(b); //438
ES6 在Number
對象上,新提供了Number.isFinite()
和Number.isNaN()
兩個方法。console
Number.isFinite()
用來檢查一個數值是否爲有限的(finite
)。二進制
能夠使用Number.isFinite( )
來進行數字驗證,只要是數字,不管是浮點型仍是整形都會返回true
,其餘時候會返回false
方法
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
Number.isNaN()
用來檢查一個值是否爲NaN
。英文
Number.isNaN(NaN) // true Number.isNaN(15) // false Number.isNaN('15') // false Number.isNaN(true) // false
它們與傳統的全局方法isFinite()
和isNaN()
的區別在於,傳統方法先調用Number()
將非數值的值轉爲數值,再進行判斷,而這兩個新方法只對數值有效,語言
Number.isFinite()
對於非數值一概返回false
, Number.isNaN()
只有對於NaN
才返回true
,非NaN
一概返回false
.
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
ES6
將全局方法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
這樣作的目的,是逐步減小全局性方法,使得語言逐步模塊化。
Number.isInteger()
用來判斷一個值是否爲整數。須要注意的是,在 JavaScript
內部,整數和浮點數是一樣的儲存方法,因此 3
和 3.0
被視爲同一個值。
Number.isInteger(25) // true Number.isInteger(25.0) // true Number.isInteger(25.1) // false Number.isInteger("15") // false Number.isInteger(true) // false
Math.trunc
方法用於去除一個數的小數部分,返回整數部分。
Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.trunc(-4.1) // -4 Math.trunc(-4.9) // -4 Math.trunc(-0.1234) // -0
對於非數值,Math.trunc
內部使用Number
方法將其先轉爲數值。
Math.trunc('123.456') // 123 Math.trunc(true) //1 Math.trunc(false) // 0 Math.trunc(null) // 0