2015-10-02 12 views
7

Czy jest jakaś różnica między sprawdzaniem długości tablicy jako wartością truey a sprawdzaniem, czy jest ona> 0?array.length vs. array.length> 0

Innymi słowy jest jakiś powód, aby użyć jednego z tych stwierdzeń nad drugim:

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

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

jeśli wiesz, że to tablica obiektów (jak kwerendy dom wynik lib rozmowy), 'if (arr [0])' działa też dobrze. – dandavis

Odpowiedz

2

array.length jest najszybszy i najkrótszy niż array.length > 0. Widać różnicę ich prędkości: http://jsperf.com/test-of-array-length

if(array.length){...} podobny do if(0){...} lub if(false){...}

+0

Co ciekawe, 'array.length' działał wolniej niż' array.length> 0' w Chrome 59. Nie jestem pewien jak to jest możliwe, ponieważ intuicyjnie wydaje się, że byłoby mniej. – Johannes

9

Czy jest jakaś różnica między sprawdzanie długości tablicy jako truthy wartości vs sprawdzając, czy to> 0?

Ponieważ wartość arr.length może być 0 lub większa i tylko od 0 to jedyny numer, który ocenia się false, nie ma różnicy.

Ogólnie rzecz biorąc, Boolean(n) i Boolean(n > 0) dają różne wyniki dla n < 0.

Innymi słowy jest jakiś powód, aby użyć jednego z tych stwierdzeń nad innymi

wyłącznie ze względów związanych z kodem czytelności i zrozumienia, a nie zachowania.

+1

+1 dla tego ostatniego zdania. Z JavaScriptem możesz zrobić prawie wszystko, nawet jeśli jest głupie lub trudne do odczytania. Aby napisać czytelny kod, potrzebny jest dobry programista. – LoremIpsum

5

W javascript nie robią różnicy.

W końcu, co jest między if nawias oceni do truthy lub falsey wartości

Dla wszystkich możliwych wartości falsey patrz All falsey values in JavaScript

Jeśli chcesz być bardziej jasne i wyraźne, użyj

if (arr.length > 0) { 
} 

Jeśli chcesz być mniej gadatliwy, użyj

if (arr.length) { 
} 
+2

Aby podkreślić tę odpowiedź, wielu programistów wybiera przejrzystość, a nie zwięzłość. Pomaga to w czytelności kodu podczas skanowania. W przeciwnym razie nie ma różnicy. – Mwr247

Powiązane problemy