Neden "" == [null] JavaScript doÄŸru mu?
Tam olarak anlamıyorum ama JavaScript türleri arasında karşılaştırmalar deli sonuçlar çok var biliyorum. Genelinde bu bugün geldi.
Neden yapar
"" == [null]
JavaScript true deÄŸerlendirir?
Eğlence, teşekkürler @Javascript eşitlik için Qantas: biraz daha fazla
CEVAP
"Abstract Equality Comparison Algorithm" birçok parça var, ama önemli olan burada bu
Yazarsanız(x. her bir Dize veya Sayı ve Tipi(yNesne, karşılaştırma sonucu döndürürx== ToPrimitive(y).
(O da ayna gibi görüntü var.) "" bir dize ve [null] bir nesne olduğundan, ilk ToPrimitive([null]) çağırarak bir dize için [null] dönüştürmek için var. Bir iç işlem ilkel bir değer için bir Nesne örneği dönüştürmek istedi olduğunda, aşağıdaki gibi tarif ediyor:
Nesne için varsayılan bir değer döndürür. Bir nesnenin varsayılan değeri çağırarak alınır [[Önek]] nesnenin iç yöntem, isteğe bağlı ipucu geçiyorPreferredType. Bu davranışı [[Önek]] dahili yöntem 8.12.8 tüm yerel ECMA nesneler için. bu belirtim tarafından tanımlanan
Şimdi, [[Önek]] dahili işlem nesne üzerinde .toString() arama ve bu değeri döndürür. Tarayıcı konsolunda: [null].toString() deneyin
> [null].toString()
""
Ve sen o var.
Düzenleme:Ve neden [null].toString() boş bir dize? Dizi .toString() ameliyat çünkü örnekleri her zaman sadece .join(), arama ve bu her zaman null undefined değerleri için boş bir dize verir. Böylece 16* *tek bir dizi sadece tek boş bir dize olarak bulur.

Neden&; true " " == JavaScript sa...
Neden "not(True) [False] DoÄŸru mu...
Neden [1,2] [3,4] = &JavaScript;1,23,4...
Neden JavaScript ile " baÅŸlatmak i...
Neden artış önlemek (&; " quot;) v...