我在一個lib的源代碼中看到了這個,並且感到困惑。我認爲,它總是評估爲'false
'。使用它的意義是什麼?'v!== v'表達式檢查是什麼?
5
A
回答
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
1
它測試「不是一個數字」:NaN !== NaN
等於true
從MDN:
楠初始值不是一個數 - 一樣的 數的值。 NaN的。在現代瀏覽器中,NaN是不可配置的, 不可寫屬性。即使情況並非如此,請避免 覆蓋它。
在程序中使用NaN相當罕見。當數學函數失敗
(Math.sqrt(-1))
或嘗試對 解析數字的函數失敗時,返回值爲(parseInt("blabla"))
。
相關問題
- 1. 什麼是ALT + v
- 2. 表達式`p [i&1] + = v,p`是什麼意思?
- 3. 反射v表達式
- 4. void * v []; v [i] = v [j];爲什麼這是正確的?
- 5. 'printf -v'是做什麼的?
- 6. vtable中的'v'是什麼?
- 7. 什麼是「grep -v'^ $'file.txt」在做什麼?
- 8. 在R中,爲什麼v [length(v)+1] = x比c(v,x)好?
- 9. foreach中的$ k => $ v是什麼($ ex爲$ k => $ v)是什麼意思?
- 10. 檢查如果一個RDD(K,V)V是包含在另一個R dd(K,V)V
- 11. 爲什麼「Rails -v」和「Bundle exec rails -v」是不同的
- 12. V <:Vector [V]在scala中的含義是什麼?
- 13. OCaml的:綁定表達式v功能
- 14. Vue的JS V-ATTR =「表達」
- 15. Hoptoad v。Exceptional v。exception_notification v。exception_logger
- 16. 「D:,H :, V:」是什麼意思在fbset?
- 17. 這是什麼:background-image:url(「/ images/sprites.png?v = 3」);
- 18. 什麼是LinkedHashMap <k, v>?
- 19. 什麼是雙V模型測試?
- 20. 什麼是XCOPY/V開關批辦?
- 21. vpath中的V代表什麼?
- 22. OpenGL命令後綴'v'代表什麼?
- 23. 什麼用的「V = 747」在
- 24. 對於無向圖,爲什麼鄰接表表示的內存要求是θ(V + E)而不是θ(V + 2E)?
- 25. SparseMultigraph <V, E>和SparseGraph <V, E>有什麼區別?
- 26. 「-v」在「git branch test_branch -v 7cd3aa021」中意味着什麼
- 27. 爲什麼v-model不能用於數組和v-for循環?
- 28. 「auto v = f()」和「auto && v = f()」有什麼區別?
- 29. Mercurial v Git v Subversion
- 30. 在v $ sql/v $ sqlarea表上查詢PL/SQL源(行號)
顯然,這樣做在ES6方式是'Object.is(OBJ,NAN)':http://wiki.ecmascript.org/doku.php ?id = harmony:egal – 2012-07-11 10:25:51
@OttoAllmendinger相當有趣。感謝您的信息。 – Engineer 2012-07-11 15:27:20