如果我們將alert(null==undefined)
輸出到true
。爲什麼null == undefined在javascript中爲true
這是什麼邏輯原因。
這是硬編碼在JavaScript中的東西還是有這個解釋。
如果我們將alert(null==undefined)
輸出到true
。爲什麼null == undefined在javascript中爲true
這是什麼邏輯原因。
這是硬編碼在JavaScript中的東西還是有這個解釋。
語言規範explicitly says:
如果x爲空,y是不確定的,返回true
我不知道的解釋推理的語言設計過程中的任何記錄該決定,但==
有處理不同類型的規則,「空」和「未定義」都是「無」意思,所以讓它們相等是很直觀的。
(如果您不想鍵入小提琴,請使用===
代替)。
使用雙等號運算符強制Javascript執行類型強制。
換句話說,當你做x == y
,如果x
和y
是同一類型的不,JavaScript的一個值轉換爲另一個比較之前,就像如果字符串和數字進行比較,字符串總是被鑄造成數然後進行比較
由於這個原因,JavaScript中混合類型的許多比較可能導致可能意外或違反直覺的結果。
如果您想在JavaScript中進行比較,通常使用三重平等運算符===
而不是雙等號更好。這不是一種類型的強制;相反,如果類型不同,則返回false。這通常是你需要的。
如果您完全肯定您需要,您只能使用雙等號。
這應該是最好的答案。很好的解釋! –
==
比較運算符不檢查類型。 null
和undefined
都返回false
。這就是爲什麼你的代碼實際上檢查是否false
等於false
。
> null == undefined;
< true
> false == false
< true
但是它們的類型並不相同。
> typeof undefined;
< "undefined"
> typeof null;
< "object"
正因爲如此,下面的語句將返回false,因爲===
比較操作檢查兩種類型及其價值。
> undefined === null;
< false
燁......你能給我一些材料,它說什麼的原因,並不僅僅是它等於:P – Nav
我會說,因爲不確定意味着什麼aswel,如果你的DIV不有一個ID,它是未定義的,或者我們可以說,不存在,空,無效。 –
你可以請解釋如何==實際上運行時,它歸結爲比較undefined和null – Nav