SORU
21 ŞUBAT 2012, Salı


Bir fonksiyon bir dizi daha büyüktür?

Bir arkadaşım daha fazla araştırma yapmaya karar verdim bazı Javascript kodu, bazı ilginç davranış keşfetti.

Karşılaştırma

(function (x) {return x*x;}) > [1,2,3]

döner en büyük tarayıcılar (Firefox, Chrome, Opera ve Safari) ve 9 false 3*. Bana, bir işlevi bir dizi daha büyük olduğunu söylemek yolu yok gibi bu karşılaştırma mantıklı sonuç undefined dışında yok.

Bu kadar ECMA-script standart okuma, nesneler üzerinde kullanıldığında > gerçek argümanlar argümanlar üzerinde ToNumber iç işlemi çağıran bir sonucu olduğunu söylüyor. Bazı deneyler ve daha fazla okuma bu (Number) arg gibi bir tür dönüşüm uygulanmasıyla aynı olmadığını söylüyor. Şartname okuma, zor zamanlar burada neler olduğunu anlamaya var.

Biri bana burada neler oluyor anlatır?

CEVAP
21 ŞUBAT 2012, Salı


> işlenen ille sayılara dönüştürülür. abstract relational comparison algorithm aramalar ToPrimitiveipucuNumber ama ToPrimitive hala bir dize (ve her ikisi de fonksiyonlar ve diziler halinde, öyle) döndürebilir.

İki dizeleri karşılaştırarak sonuna kadar. toString on function objects arama sonucu en büyük motorlar kaynak işlevi kod (ya da biçimlendirme değişir çeşit) dönmek için ancak spec tarafından tanımlı değil. toString on arrays arama sonucu join aynıdır.

Oran temelde bu işi bitireceğiz bu yüzden:

"function (x) {return x*x;}" > "1,2,3"

Beri tam formunda dize işlevi değişebilir Tarayıcı-Tarayıcı (ve not Esailija's investigations - görünüşe göre 9 tutar dış () Krom değil) değil, çok şaşırtıcı bu sonuç değişebilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • disneychannel

    disneychanne

    19 ŞUBAT 2006
  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Hollyscoop

    Hollyscoop

    30 Ocak 2007