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
>
işlenen ille sayılara dönüştürülür. abstract relational comparison algorithm aramalar ToPrimitive
ipucuNumber
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.
Bir fonksiyon içinde Return dizi...
JSLint: daha önce bir fonksiyon'u...
Arr = neden [] daha hızlı = yeni Dizi?...
Fonksiyon dizi parametre statik anahta...
Doğrulamak bitiş tarihi jQuery ile baş...