1. 程式人生 > >JavaScript中的NaN

JavaScript中的NaN

可以參考文件 MDN


什麼是NaN

  1. 全域性屬性 NaN 表示 Not-A-Number (非數值)的值。
  2. NaN 是一個全域性物件的屬性。
  3. NaN 屬性的初始值就是 NaN,和 Number.NaN 的值一樣。
  4. 在 ES5 中, NaN 屬性是一個不可配置(non-configurable),不可寫(non-writable)的屬性。但在 ES3 中,這個屬性的值是可以被更改的,但是也應該避免覆蓋。

Property attributes of NaN

property boolean
Writable no
Enumerable no
Configurable no

NaN的型別

typeof NaN   // "number"

NaN 是一種特殊的 Number 型別值。

Testing against NaN

可以看到NaN不等於本身,也很好理解, 因為NaN可以是很多個非數值的值,它們不一定相等。
The Number.NaN property represents Not-A-Number. Equivalent of NaN.Number.NaN靜態屬性表示非數值,等同於NaN

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

function valueIsNaN(v) { return v !== v; }
valueIsNaN(1);          // false
valueIsNaN(NaN);        // true
valueIsNaN(Number.NaN); // true

see also