JavaScript 的特殊行為(其中 NaN === NaN
計算結果為 false
)經常讓開發人員感到困惑。 本文闡明了為什麼會發生這種情況,並提供了 NaN 檢測的正確方法。
理解 NaN
NaN 是「Not-a-Number」的縮寫,表示無效或未定義的數學運算的結果。 例如:
<code class="language-javascript">console.log(0 / 0); // NaN console.log(Math.sqrt(-1)); // NaN</code>
為什麼不平等?
浮點運算的 IEEE 754 標準規定 NaN 不等於任何東西,包括它本身。 這種設計可以防止錯誤地處理無效結果,就好像它們是有效的數值一樣。 本質上,NaN 標記了錯誤情況並且本質上是不可比較的。
可靠的 NaN 檢查
處理 NaN 時直接比較失敗。 相反,請使用這些函數:
isNaN()
: 此全域函數檢查值是否為 NaN 或強制轉換為 NaN:<code class="language-javascript">console.log(isNaN("abc")); // true</code>
Number.isNaN()
: 此方法提供了對 NaN 的更精確檢查,避免類型強制:<code class="language-javascript">console.log(Number.isNaN(NaN)); // true</code>
總結
NaN === NaN
比較產生 false
因為 NaN 代表錯誤狀態,而不是數值。 要準確檢測 NaN,請使用 isNaN()
或 Number.isNaN()
來獲得健壯且可靠的程式碼。
來源
以上是為什麼NAN === Nan在JavaScript中返回False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!