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

  • iNCH

    iNCH

    20 Temmuz 2009
  • MotoManTV

    MotoManTV

    10 Aralık 2009
  • Tire Rack

    Tire Rack

    31 Mayıs 2007