Próbuję iterować przez szereg elementów. Dokumentacja jQuery mówi:
Zwracanie wartości innej niż false jest takie samo, jak instrukcja Kontynuuj w pętli for, spowoduje to natychmiastowe przejście do następnej iteracji.
Próbowałem nazwać „return non-false”; i „nie-fałsz”; (bez powrotu) żadne z nich nie przechodzi do następnej iteracji. Zamiast tego przerywają pętlę. Czego mi brakuje?
javascript
jquery
iteration
Josh
źródło
źródło
Odpowiedzi:
Przez nie-fałsz rozumieją:
Więc ten kod:
zanotuje
one
,two
,four
,five
.źródło
Przez „zwróć nie-fałsz” rozumieją, że zwracają dowolną wartość, która nie zadziałałaby na boolean fałsz. Więc można wrócić
true
,1
,'non-false'
, lub cokolwiek innego, co może wymyślić.źródło
JavaScript w pewnym sensie ma pojęcie „prawdy” i „fałszu”. Jeśli zmienna ma wartość, to na ogół 9 jak zobaczysz) ma „prawdziwość” - zero, lub żadna wartość nie prowadzi do „fałszu”. Poniższe fragmenty mogą pomóc:
Mam nadzieję, że to pomaga?
Warto również sprawdzić te filmy z Douglas Crockford
aktualizacja: dzięki @cphpython za wykrycie niedziałających linków - zaktualizowałem teraz, by wskazywać na działające wersje
Język JavaScript
JavaScript - dobre części
źródło
0
jest to również wartość fałsz, a negacja jest prawdziwa (i odwrotnie, na przykład do dowolnej innej liczby!-42 === false
).Nie zapominaj, że czasami możesz po prostu spaść z końca bloku, aby przejść do następnej iteracji:
Zamiast wracać w ten sposób:
źródło
Pętla przerywa się tylko wtedy, gdy powrócisz dosłownie
false
. Dawny:Oznacza to, że możesz zwrócić cokolwiek innego, w tym
undefined
, co zwrócisz, jeśli nic nie zwrócisz, więc możesz po prostu użyć pustej instrukcji return:Możliwe, że może się to różnić w zależności od wersji; dotyczy to jquery 1.12.4. Ale tak naprawdę, kiedy wyjdziesz z dolnej części funkcji, również nic nie zwracasz, i dlatego pętla trwa, więc oczekiwałbym, że nie ma żadnej możliwości, że nic nie zwróci pętli. O ile nie chcą zmusić wszystkich do zwrócenia czegoś, aby utrzymać pętlę, nic nie musi być sposobem na utrzymanie.
źródło
jQuery.noop () może pomóc
źródło