本節咱們學習 ES6
中的經常使用數據類型之數值(Number)類型。ES6
中除了 JavaScript
中的六種數據類型以外,還引入了一種新的原始數據類型 Symbol
,它是 JavaScript 語言的第七種數據類型:學習
Number
(數值)String
(字符串)Boolean
(布爾值)Object
(對象)undefined
null
Symbol
ES6
中提供了二進制和八進制數值的新的寫法:code
0b
或者 0B
表示。let a = 0b1001; console.log(a); // 輸出:9
0o
或者0O
表示。let b = 0o345; console.log(b); // 輸出:229
從 ES5
開始,在嚴格模式之中,八進制就再也不容許使用前綴 0
表示,ES6
進一步明確,要使用前綴0o
表示。對象
// 非嚴格模式 (function(){ console.log(0o11 === 011); })() // true // 嚴格模式 (function(){ 'use strict'; console.log(0o11 === 011); })()
執行代碼後,報錯信息以下所示:ip
SyntaxError: Octal literals are not allowed in strict mode.
若是要將 0b
和 0o
前綴的字符串數值轉爲十進制,要使用 Number
方法。字符串
console.log(Number('0b110')); // 輸出:6 console.log(Number('0o43')); // 輸出:35
ES6
在 Number
對象上提供了一些方法,咱們一塊兒來看一下。it
isFinite()
方法能夠用於檢查一個數值是否爲有限的。若是是則返回 true
,不是則返回 false
。io
console.log(Number.isFinite(1)); // true console.log(Number.isFinite(1000.0)); // true console.log(Number.isFinite('xkd')); // false console.log(Number.isFinite(NaN)); // false console.log(Number.isFinite(true)); // false
上述代碼中能夠看到,只有當 isFinite
方法中的參數爲有限數值時,纔會返回 true
,參數的值爲字符串或者布爾類型等都會返回 false
。console
isNaN()
方法用來檢查一個值是不是 NaN
,爲 NaN
則返回 true
,不然返回 false
。function
能夠看到,下面代碼中只有第一個 isNaN()
方法的返回結果爲 true
:class
console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN(null)); // false console.log(Number.isNaN('xkd')); // false console.log(Number.isNaN(true)); // false
parseInt()
方法用於將值轉換爲整型。若是參數不爲數值類型,則會返回 NaN
。
console.log(Number.parseInt(1.215)); // 1 console.log(Number.parseInt(null)); // NaN console.log(Number.parseInt(8.0)); // 8 console.log(Number.parseInt('xkd')); // NaN
parseFloat()
方法用於將值轉換爲浮點型。
console.log(Number.parseFloat(2.15)); // 2.15 console.log(Number.parseFloat(7)); // 7 console.log(Number.parseFloat(16)); // 16 console.log(Number.parseFloat(null)); // NaN console.log(Number.parseFloat(undefined)); // NaN console.log(Number.parseFloat('xkd')); // NaN
isInteger()
方法用來判斷一個值是否爲整數。須要注意的是,在 JavaScript
內部,整數和浮點數是一樣的儲存方法,例如 1
和 1.0
被視爲同一個值。
從下面代碼中能夠看出,只有當參數爲整數結果纔會返回 true
,當參數不爲整數或者數值類型的值時,也會返回 false
:
console.log(Number.isInteger(2.15)); // false console.log(Number.isInteger(7)); // true console.log(Number.isInteger(16)); // true console.log(Number.isInteger('xkd')); // false console.log(Number.isInteger(null)); // false console.log(Number.isInteger(true)); // false
ES6
在 Math 對象上新增了一些與數值相關的方法,這些方法所有都是靜態方法,只能在 Math
對象上調用。
trunc()
方法用於去除一個數的小數,只保留整數部分,也能夠理解爲取整。
console.log(Math.trunc(1.85)); // 1 console.log(Math.trunc(-7.15)); // -7 console.log(Math.trunc(25)); // 25 console.log(Math.trunc('xkd')); // NaN console.log(Math.trunc(true)); // 1 console.log(Math.trunc(false)); // 0
須要注意的是,當方法中參數的類型爲字符串時,會返回一個 NaN
,當參數爲 true
時返回 1
,爲 false
則返回 0
。
sign()
方法用來判斷一個數是正數、負數、或者 0
。當參數爲負數時返回 -1
,爲 0
時返回 0
,爲正數時返回 1
。
console.log(Math.sign(-7)); // -1 console.log(Math.sign(0)); // 0 console.log(Math.sign(34)); // 1 console.log(Math.sign('xkd')); // NaN console.log(Math.sign(true)); // 1 console.log(Math.sign(false)); // 0
cbrt()
方法用於計算一個數的立方根。
console.log(Math.cbrt(8)); // 2 console.log(Math.cbrt(27)); // 3 console.log(Math.cbrt(9)); // 2.080083823051904 console.log(Math.cbrt(0)); // 0 console.log(Math.cbrt(true)); // 1 console.log(Math.cbrt(false)); // 0 console.log(Math.cbrt('xkd')); // NaN
clz32()
方法將參數轉爲 32
位無符號整數的形式,而後返回這個 32
位值裏面有多少個前導 0
。
console.log(Math.clz32(1)); // 31 console.log(Math.clz32(0)); // 32 console.log(Math.clz32(14)); // 28 console.log(Math.clz32(188)); // 24 console.log(Math.clz32(true)); // 31 console.log(Math.clz32(NaN)); // 32
imul()
方法返回兩個數以 32
位帶符號整數形式相乘的結果,返回的也是一個 32
位的帶符號整數。
console.log(Math.imul(2, 5)); // 10 console.log(Math.imul(-1, 4)); // -4 console.log(Math.imul(-2, -9)); // 18 console.log(Math.imul(NaN)); // 0 console.log(Math.imul(true)); // 0
fround()
方法返回一個數的單精度浮點數形式。
console.log(Math.fround(1.125)); // 1.125 console.log(Math.fround(1000)); // 1000 console.log(Math.fround(-1)); // -1 console.log(Math.fround(1.0254)); // 1.0254000425338745
hypot()
方法返回全部參數的平方和的平方根。
console.log(Math.hypot(-1)); // 1 console.log(Math.hypot(3, 5)); // 5.8309518948453 console.log(Math.hypot(NaN)); // NaN console.log(Math.hypot('xkd')); // NaN console.log(Math.hypot(true)); // 1 console.log(Math.hypot()); // 0