iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
Modern Web

從ES到ESNext - 30天輕鬆掌握ECMAScript系列 第 4

ES2015(ES6) - number 、 Math

本系列文章經過重新編排和擴充,已出書為ECMAScript關鍵30天。原始文章因當時準備時程緊迫,多少有些許錯誤。為了避免造成讀者的困擾,以及配合書籍的內容規劃,將會陸續更新本系列文章。
本篇文章在 2021/11/5 已更新。

number

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

Math.sign(value)

判斷數值是正數、負數、或為0,回傳結果分別為:

  • 正數: 1
  • 負數: -1
  • 0: 0
  • -0: -0
  • 其他: NaN
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

上一篇
ES2015(ES6) - 變數
下一篇
ES2015(ES6) - string
系列文
從ES到ESNext - 30天輕鬆掌握ECMAScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言