2011-05-17 31 views
9
undefined === null => false 
undefined == null => true 
  1. 我曾想過的undefined == null的原因,發現只有一種情況:undefined和null

    if(document.getElementById() == null) .... 
    

    是否有任何其他原因使(undefined === null) == false

  2. 是?還有其他使用示例=== - javascript中的操作?

回答

11

是否有任何其他原因使(undefined === null)== false?

它們並不相同,所以Strict Equality Comparison Algorithm認爲它們是錯誤的。

是否有任何其他使用===的例子 - 在JavaScript中操作?

===給出了最可預測的結果。當我有類型強制的特定目的時,我只使用==。 (見Abstract Equality Comparison Algorithm。)

+0

同一時間。令人印象深刻的 – Raynos 2011-05-17 13:25:00

+1

@Raynos:是的,我等了幾秒鐘,以便趕上。 ; o) – user113716 2011-05-17 13:26:12

3

===是嚴格平等的。

未定義和null不是一回事。

==使用類型強制。

nullundefined相互脅迫。

4

nullundefined是兩個不同的概念。 undefined缺少值(如果您使用var定義變量而不初始化它,它不包含null,但undefined),而使用null變量存在並使用值null進行初始化,該值是一種特殊類型的值。

雖然JavaScript的相等運算符被破壞,但Crockford發現它缺乏傳遞性,因此建議始終使用嚴格的等式(===)。考慮該表公佈在Javascript中好的部分:

'' == '0'   // false 
0 == ''   // true 
0 == '0'   // true 

false == 'false' // false 
false == '0'  // true 

false == undefined // false 
false == null  // false 
null == undefined // true 
+2

*「未定義是缺乏價值(可能變量不存在),」*這不太正確。使用'undefined',變量確實存在,但它已被分配(或重新分配)其默認值'undefined'。如果你試圖比較一個不存在的變量,你會得到一個'ReferenceError'。 – user113716 2011-05-17 13:39:40

+1

@patrick你說得對。我已經解決了答案。謝謝。 – stivlo 2011-05-17 13:42:58

3

Type coercion(使用==操作符),可能導致意想不到的或意想不到的結果。在我可以在網上找到道格拉斯克羅克福德的所有談話後(我主要是雅虎視頻),我已經習慣了所有時間都使用===。鑑於我的嚴格平等運算符的默認使用,我會更感興趣的類型強制JavaScript用例;〜)時下。

相關問題