此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。
NaN
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
全域屬性NaN 表示「非數值」(Not-A-Number)的數值。
NaN 的屬性特性 | |
|---|---|
| 可寫 | 否 |
| 可列舉 | 否 |
| 可配置 | 否 |
In this article
嘗試一下
function sanitize(x) { if (isNaN(x)) { return NaN; } return x;}console.log(sanitize("1"));// Expected output: "1"console.log(sanitize("NotANumber"));// Expected output: NaN語法
NaN
描述
NaN 的屬性屬於全域物件。
如同Number.NaN 一般,NaN 的初始數值是「非數值」。在當今的瀏覽器中,NaN 屬性不可設定(non-configurable)也不可覆寫(non-writable)。雖然可能有例外,也請不要覆蓋它。
寫程式很少會直接動用NaN。通常是在Math 函式計算失敗(Math.sqrt(-1))或函式解析數字失敗(parseInt("blabla"))後才會回傳。
偵測是否為NaN
NaN 不等於(==、!=、===、!==)任何值,包括 NaN 本身。請使用Number.isNaN() 或isNaN() 來確認某個數值是否為 NaN。Or perform a self-comparison: NaN, and only NaN, will compare unequal to itself.
js
NaN === NaN; // falseNumber.NaN === NaN; // falseisNaN(NaN); // trueisNaN(Number.NaN); // truefunction valueIsNaN(v) { return v !== v;}valueIsNaN(1); // falsevalueIsNaN(NaN); // truevalueIsNaN(Number.NaN); // true但請注意isNaN() 與Number.isNaN() 之間是有區別的:前者會在目前數字是NaN 的時候回傳true,或在裡面包藏一個號碼後變成NaN;而後者,只有在數值是NaN 的時候才會回傳true。
規範
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-value-properties-of-the-global-object-nan> |