本系列文章經過重新編排和擴充,已出書為ECMAScript關鍵30天。原始文章因當時準備時程緊迫,多少有些許錯誤。為了避免造成讀者的困擾,以及配合書籍的內容規劃,將會陸續更新本系列文章。
本篇文章在 2021/11/5 已更新。
Number.MIN_SAFE_INTEGER/Number.MAX_SAFE_INTEGER
為了方便,不需再經過數學運算取得,在Number
物件中新增安全最大正整數與安全最小負整數的靜態屬性,分別為正負2的53次方減1。
Number.NaN
在ES5以前就有全域的屬性可以取得。不過在ES2015後擴充成為Number
物件裡的靜態屬性。
Number.isSafeInteger(value)
判斷數值是否為落在安全整數範圍內的整數,回傳結果為布林值。
Number.isInteger(value)
判斷數值是否為整數,回傳結果為布林值。
Number.isInteger(25) //true
Number.isInteger(-88) //true
Number.isInteger(0) //true
Number.isInteger(3.14) //false
Number.isInteger(-8.2544) //false
在ES2015後,鼓勵是以模組化的方式開發,其中就包含降低全域方法的使用。所以像是parseInt()
、parseFloat()
和isNaN()
,在Number
物件裡也有實現同樣的方法。
Number.parseInt(value, radix)
將輸入的字串轉成整數。如果無法轉為數值,則回傳NaN
。
radix
指的是從2 ~ 36的進位系統指定。
Number.parseInt('-532'); //-532
Number.parseInt(' 3 '); //3
Number.parseInt('NaN'); //NaN
Number.parseInt('true'); //NaN
Number.parseFloat(value)
將輸入的字串轉成浮點數。如果無法轉為數值,則回傳NaN
。
Number.parseFloat('-532.2546'); //-532.2546
Number.parseFloat(' 3.14 '); //3.14
Number.parseFloat('NaN'); //NaN
Number.parseFloat('true'); //NaN
Number.isNaN(value)
判斷數值是否為NaN
,回傳結果為布林值。
Number.isNaN(NaN) // true
Number.isNaN('NaN') // false
Number.isNaN(true) // false
Number.isNaN(88) // false
ES5以前,就有提供一個全域的方法。不過差別是,全域的方法不管value
是什麼型態,都會先嘗試轉為數字型別;而Number
物件的方法則是多加一個條件判斷,先檢查型別是不是為數字。
Math.sign(value)
判斷數值是正數、負數、或為0,回傳結果分別為:
Math.sign(28) // 1
Math.sign(-5.6974) // -1
Math.sign(0) // 0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
如果是字串,會先轉為數值類型再回傳。如果無法轉為數值,則回傳NaN
。
Math.sign('25.564') // 1
Math.sign('string') // NaN
Math.trunc(value)
將數值的小數點移除,只回傳整數的結果。若是布林值,則回傳1或0。
Math.trunc(45.1561) // 45
Math.trunc(-36.2542) // -36
如果是字串,會先轉為數值類型再回傳。如果無法轉為數值,則回傳NaN
。
Math.trunc('45.1561') // 45
Math.trunc('-36.2542') // -36
Math.trunc('true') // NaN
Math.cbrt(value)
取得傳入數值的立方根。
console.log(Math.cbrt(8)); // 2
console.log(Math.cbrt(-8)); // -2
console.log(Math.cbrt(0)); // 0