2015-10-02 9 views
7

Gibt es einen Unterschied zwischen der Überprüfung der Länge eines Arrays als Truthy-Wert und der Überprüfung, ob es> 0 ist?array.length vs. array.length> 0

Mit anderen Worten gibt es keinen Grund ein diese Aussagen über die andere zu verwenden:

var arr = [1,2,3]; 
if (arr.length) { 
} 

if (arr.length > 0) { 
} 
+0

, wenn Sie wissen, dass es eine Reihe von Objekten (wie ein dom Abfrageergebnis lib call), 'if (arr [0])' funktioniert auch gut. – dandavis

Antwort

2

array.length ist am schnellsten und kürzesten als array.length > 0. Sie können Unterschied ihrer Geschwindigkeiten sehen: http://jsperf.com/test-of-array-length

if(array.length){...} ist ähnlich if(0){...} oder if(false){...}

+0

Interessanterweise lief 'array.length' für mich langsamer als' array.length> 0' in Chrome 59. Nicht sicher, wie das möglich ist, da es intuitiv so aussieht, als würde es weniger tun. – Johannes

9

Gibt es einen Unterschied zwischen einer Anordnung der Länge als truthy Wert Kontrolle vs Überprüfung, dass es> 0?

Da der Wert von arr.length nur 0 sein kann oder größer und da 0 die einzige Zahl ist, die false auswertet, gibt es keinen Unterschied.

Im Allgemeinen ergeben Boolean(n) und Boolean(n > 0) unterschiedliche Ergebnisse für n < 0.

Mit anderen Worten gibt es keinen Grund eine dieser Aussagen über die anderen

nur auf die Lesbarkeit des Codes und Verständnis Gründen zu verwenden, nicht das Verhalten.

+1

+1 für diesen letzten Satz. Mit JavaScript können Sie so gut wie alles machen, auch wenn es dumm oder schwer zu lesen ist. Es braucht einen guten Entwickler, um lesbaren Code zu schreiben. – LoremIpsum

5

In Javascript machen sie keinen Unterschied.

Am Ende, was auch immer in ist zwischen der if Klammer zu einem truthy oder Falsey Wert auswertet

Für alle möglichen Falsey Werte finden All falsey values in JavaScript

Wenn Sie mehr klar sein, und explizite, verwenden

if (arr.length > 0) { 
} 

Wenn Sie weniger ausführlich sein, verwenden

if (arr.length) { 
} 
+2

Um diese Antwort zu betonen, wählen viele Entwickler Klarheit, um präzise zu sein. Es hilft beim Lesen des Codes beim Lesen. Ansonsten gibt es keinen Unterschied. – Mwr247