yılında obj.length birçok yerde ben onlar niçin kullanıyoruz,obj.length === + underscore.js kaynağında javascript
if (obj.length === +obj.length)
birisi açıklayabilir rastladı?
yılında obj.length birçok yerde ben onlar niçin kullanıyoruz,obj.length === + underscore.js kaynağında javascript
if (obj.length === +obj.length)
birisi açıklayabilir rastladı?
if (typeof obj.length == 'number')
yazmanın başka bir yolu. Neden böyle yaparlarsa, bu birisinin tahminidir. Muhtemelen okunabilirlik pahasına akıllı olmaya çalışıyorum. Hangisi değil çok nadir bugünlerde maalesef ...
o yüzden minifiers (YUI Compressor, Closure Compiler, UglifyJS, vs) tarafından daha sıkıştırılabilir olamayabilir rağmen:
(a.length===+a.length)
(typeof a.length=='number')
Bunların yapılması, her biri 5 baytlık tasarruf sağlar. Numaraya
obj
's length
özelliğinin bir numarasıdır.
unary +
operator, işlenenini bir sayıya dönüştürür ve strict equality operator, sonucu, orijinal length
özelliğinin tür baskısı gerçekleştirmeden karşılaştırır. Bu nedenle, obj.length
gerçek bir sayıysa (örneğin, bir sayıya dönüştürülebilen bir dize) ifade yalnızca ifade true
olacaktır.
+obj.length
numarayı obj.length
döndürünüz. Sanırım bu, obj.length
'un bir sayı olup olmadığını test etmektir.
Eğer obj.length bir sayı ise test etmelerinin ana sebebi bence - Object'in nesne tipini [object Array] 'dan ayırmaktır (String ve Function nesneleriyle de çalışır). [Nesne nesnesi], uzunluk özelliğine sahip değil.
yüzden
obj = {a:1, b:2}; //obj.length = undefined
obj.length === +obj.length
undefined === NaN //false - you know that your obj has type Object
// (or some other object, but not Array, !String and !Function)
// so, you need to determine size of the obj in some way
// or use for in loop to iterate over your obj
Saygılarımızla
PS eğer: IMO ikinci bölümünü "niye kullanıyorsun o" sorusu
teşekkürler, bu testte "else" maddesine neden ihtiyaç duyduklarını anlamama yardımcı oldu nesne anahtarları/öğe üzerinde döngü için klasik "for" yerine döngü. –
kaydet olsa bazı perf pahasına 5 bayt (cevaplar http://jsperf.com/obj-length-vs-typeof-number – j03m