iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
0
Modern Web

JavaScript Note系列 第 5

NaN & Infinity

NaN

NaN(Not a Number)。
如果JavaScript運算結果為無法明確定義的數值,便會產生NaN。
它代表無法表示的數值。

發生以下幾種情況,會產生NaN:

  • 運算元無法被轉為Number
    https://ithelp.ithome.com.tw/upload/images/20181020/20112573sVE2LjjOBj.png
  • 取負數的平方根
    https://ithelp.ithome.com.tw/upload/images/20181020/20112573qbwHO9QHrF.png
  • 0除以0
    https://ithelp.ithome.com.tw/upload/images/20181020/20112573mViKYpczjD.png
  • 對Infinity做除法或減法運算
    https://ithelp.ithome.com.tw/upload/images/20181020/2011257342H7IFya6t.png
  • 運算元為NaN
    https://ithelp.ithome.com.tw/upload/images/20181020/20112573hj3HwMEvov.png

以上都為NaN,依照一般數學邏輯來看待,結果是顯而易見的,因為無法計算出一個明確的答案。

NaN有2個很別的特徵:

  1. 型別是Number
    https://ithelp.ithome.com.tw/upload/images/20181020/20112573BGVR71wvlj.png
  2. 不等於任何值,也不等於自己
    https://ithelp.ithome.com.tw/upload/images/20181020/201125739uG8kkzbS8.png

以下幾個方式可以用來判斷是否為NaN。
isNaN( ),引數為NaN、String、Object時,回傳true。
https://ithelp.ithome.com.tw/upload/images/20181020/20112573LhH3wQNYbq.png
但上面的方式還不夠明確,我們可以利用NaN的特性:不等於任何值,包括本身。

if(x!==x){
    
}

只有在x為NaN時,結果才為True。

Infinity

當一個數值太大或太小,已超出可顯示範圍的時候,就會以Infinity表示,正無限大為Infinity,負無限大為-Infinity。
https://ithelp.ithome.com.tw/upload/images/20181020/201125739yhCNPEL2h.png
10的1024次方已經超出可表示的範圍了,所以回傳值為Infinity。
除以0,也會產生Infinity。

因為它本身已經定義為大/小到無法表示的值了,所以對Infinity做四則運算是沒有意義的:
https://ithelp.ithome.com.tw/upload/images/20181020/20112573D326Jibzvv.png
isFinite( ),能讓我們檢查是否為有效的數值或可以轉型為Number的值:
https://ithelp.ithome.com.tw/upload/images/20181020/201125730092nC7PJb.png

參考來源:
JavaScript大全
Speaking JavaScript|簡明完整的 JS 精要指南


上一篇
Boolean 布林
下一篇
型別轉換
系列文
JavaScript Note31

尚未有邦友留言

立即登入留言