2010-11-19 7 views
5

(Firefox'ta test) JavaScript kodu aşağıdaki düşünün:Quantum duality: Değişken aynı anda null ve undefined?

function f(a) { 

    if (a == undefined) { 
    alert('undefined'); 
    } 

    if (a == null) { 
    alert('null'); 
    } 
} 

f(); 

Her iki uyarılar gösterilir, her iki ifadelerin doğru olduğunu düşündüren.

Makul bir açıklama yapabilir misiniz? Bir "yumuşak" eşitlik işleci

cevap

10

==.
İki eşdeğer nesneyi eşit olarak karşılaştırmak için tip zorlama kullanır. Aşağıdakilerden

Tüm

doğrudur:

42 == "42" 
0 == false 
0 == "" 
[] == "" 
{} == "[object Object]" 
'/(?:)/' == new RegExp 

Bunun yerine, sıkı eşitlik açısından kontrol === operatörü, kullanmalıdır.

+0

Daha iyi olur: '[[[[[[[[[[2]]]]]]]]] == 2' –

+0

+1, RE'yi ve dizgisi eşdeğerini doğru bilmiyor:' '/ (?:) /' ==/(?:)/'-> doğru! – slebetman

+0

Hatta ''/x/'==/x/'-> true,''/x/'==/y/'-> false! – slebetman