我在發現JavaScript比較的機率。我想找到一個比較棘手的例子,以及在某些情況下如何導致錯誤。爲什麼在JavaScript中undefined不等於零?
我想過一些輸入變量保持未定義的例子,並將其與零比較。因爲不確定是假的時,轉換爲布爾和零爲假時,轉換爲布爾我決定測試一下下面的代碼:
var x;
//Here x should be initialized but due to some circumstances is not
if(x == 0){
//This should run
}
令人驚訝的...
Boolean(undefined) //false
Boolean(0) //false
x //undefined
x == 0 //false
爲什麼它是這樣呢?
既然'1'和'2'都是真的,你會期望'1 == 2'是'true'嗎? –
你期待什麼樣的答案超越「因爲規格說明」? http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 – Quentin
那麼'未定義!= 0',我想那就是它。請參閱此處以獲取JS比較的完整列表:https://dorey.github.io/JavaScript-Equality-Table/ –