2012-07-11 59 views

回答

6

它檢查v是否NaN

if(v !== v){ 
    //'v' is NaN here 
} 

standard

爲ECMAScript的代碼來測試一個值是否X是NaN一個可靠的方法是如下形式的表達X!== X.當且僅當X是NaN時,結果才爲真。

爲什麼不只是使用內置的isNaN()

答案很簡單:「isNaN()不夠可靠。」。這裏有情況下,當isNaN()會失敗:

isNaN("NaN")   //true 
isNaN(undefined)  //true 
+0

顯然,這樣做在ES6方式是'Object.is(OBJ,NAN)':http://wiki.ecmascript.org/doku.php ?id = harmony:egal – 2012-07-11 10:25:51

+0

@OttoAllmendinger相當有趣。感謝您的信息。 – Engineer 2012-07-11 15:27:20

1

它測試「不是一個數字」:NaN !== NaN等於true

MDN

楠初始值不是一個數 - 一樣的 數的值。 NaN的。在現代瀏覽器中,NaN是不可配置的, 不可寫屬性。即使情況並非如此,請避免 覆蓋它。

在程序中使用NaN相當罕見。當數學函數失敗(Math.sqrt(-1))或嘗試對 解析數字的函數失敗時,返回值爲 (parseInt("blabla"))

相關問題