2011-09-30 29 views
25

0 == "", JavaScript'te neden doğrudur? similar post here buldum, ancak neden 0 boş bir dizeye benzer? Tabii ki 0 === "" yanlıştır.Neden 0 = 0 "" true 0 = 0 "

+0

Sen 0 "dökme" anlamına false içinde, "" yanlış içinde döküm ve onay yanlıştır == false => PHP için gerçek –

+0

bkz: http: // php. net/manual/tr/types.comparisons.php – apscience

+0

Bunun sebebi, Javascript'in bazı bağlamlardaki dizeleri ve sayıları otomatik olarak zorlamasından dolayı, == operatörü bu bağlamlardan biri ve "" 0'a denk geliyor. – millimoose

cevap

46
0 == '' 

Sol işlenen, Number türündendir.
Sağ işlenen, String türündendir. Bu durumda

, sağ işlenen türü sayısı zorlama bir: Dan

0 == 0 

sonuçlanır

0 == Number('') 

Özet Eşitlik Karşılaştırma Algoritma (sayı 4) :

Tür (x) Sayı ve Tür (y) ise, String ise, sonucunu x == ToNumber (y) karşılaştırmasına döndürür.

Kaynak: http://es5.github.com/#x11.9.3

+0

Teşekkürler, sadece başka bir yoldan bekledim, 0 dize dönüştürülmüş ve sonra yanlış. –

+0

Evet, diğer yandan bu, her ikisinin de yanlış olduğunu söyler - diğer cevaplarda olduğu gibi, tam olarak doğru değildir. Çünkü - çok iyi gösterdiğiniz gibi - bunun nedeni "" => 0. Desteğiniz için teşekkürler! –

+1

@Horst - evet, doğru. Her ikisi de _are_ falsy, eğer bunları tek başına kullanıp kullanamayacağınızı görebiliyorsanız, eğer (0) 'veya' if ("") ', ancak bir' == 'durumunda ise, bu olmuyor. (Ayrıca, Šime'nin "Her iki değer de falsi" olduğu için yukarıda bir yorum bıraktığından emin değilsiniz.) – nnnnnn