SORU
27 AĞUSTOS 2014, ÇARŞAMBA


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
27 AĞUSTOS 2014, ÇARŞAMBA


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B4ROK

    B4ROK

    1 EKİM 2008
  • CMTelly

    CMTelly

    2 Mayıs 2007
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009