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...