nan 在 javascript 中出現(xiàn)的原因
NaN(Not-a-Number)是 JavaScript 中表示非數(shù)字值的一個特殊值。它通常出現(xiàn)在以下情況下:
1. 嘗試轉(zhuǎn)換無效的字符串為數(shù)字
例如:
<code>const num = parseInt("abc");</code>
登錄后復(fù)制
上述代碼嘗試將字符串 “abc” 轉(zhuǎn)換為數(shù)字,由于 “abc” 不是有效的數(shù)字,因此結(jié)果為 NaN。
2. 數(shù)學(xué)運(yùn)算中的無效操作
例如:
<code>const num = 0 / 0;</code>
登錄后復(fù)制
上述代碼嘗試除以 0,這是無效的操作,因此結(jié)果為 NaN。
3. 試圖訪問未初始化的變量
例如:
<code>let num; console.log(num);</code>
登錄后復(fù)制
上述代碼中,num 變量未初始化,因此 console.log 輸出 NaN。
4. 使用isNaN() 函數(shù)
isNaN() 函數(shù)用于測試一個值是否為 NaN。如果值為 NaN,則函數(shù)返回 true,否則返回 false。
5. 其他情況
除了上述情況外,NaN 還可以出現(xiàn)在以下情況下:
嘗試將 Infinity 與另一個值相加或相減
嘗試將數(shù)字與字符串相乘
嘗試將數(shù)字轉(zhuǎn)換為布爾值
注意:
并不是所有出現(xiàn) NaN 的值都是錯誤的。在某些情況下,NaN 可以作為有效結(jié)果,例如:
Math.sqrt(-1) 返回 NaN,表示平方根的虛部
parseInt(“0x10”) 返回 NaN,表示十六進(jìn)制字符串轉(zhuǎn)換為數(shù)字失敗