JavaScript中,NaN是一個特殊的數字值(typeof NaN的結果為number),是not a number的縮寫,表示不是一個合法的數字,
1. NaN的產生:
- 一個不能被決議的數字
Number('abc') // NaN
Number(undefined) // NaN
- 失敗的操作
Math.log(-1) // NaN
Math.sqrt(-1) // NaN
Math.acos(2) // NaN
- 一個運算子為
NaN
NaN + 1 // NaN
10 / NaN // NaN
2. 注意點
NaN是唯一一個和自身不相等的值:
NaN === NaN // false
3. 如何辨別NaN
我們可以使用全域函式isNaN()來判斷一個數值是不是一個非數字(并不是用來判斷是不是NaN這個值):
isNaN(NaN) // true
isNaN(10) // false
為什么說isNaN()不是用來判斷是不是NaN這個值的呢?因為isNaN對非數字不起作用,它首先做的就是把這些值轉換成數字,轉換的結果可能為NaN,然后函式會錯誤地回傳true:
isNaN('abc') // true
所以我們想確定這個一個值是為NaN,可以使用以下兩種方法:
- 方法一:將
isNaN()和typeof結合來判斷
function isValueNaN(value) {
return typeof value === 'number' && isNaN(value)
}
- 方法二:值是否與本身不相等(
NaN是唯一有這樣特征的值)
function isValueNaN(value) {
return value !== value
}
參考:《深入理解JavaScript》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/2761.html
標籤:其他
上一篇:前端傳遞多個物件的資料到后臺
