JavaScript中的NaN
阿新 • • 發佈:2018-12-30
可以參考文件 MDN
什麼是NaN
- 全域性屬性 NaN 表示 Not-A-Number (非數值)的值。
- NaN 是一個全域性物件的屬性。
- NaN 屬性的初始值就是 NaN,和 Number.NaN 的值一樣。
- 在 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