претензии:Итерация в JavaScript
... вы можете перебрать массив, используя следующие:
for (var i = 0; i < a.length; i++) { // Do something with a[i] }
Это немного не эффективен, поскольку отрываясь свойство длины один раз петля. Улучшение заключается в следующем:
for (var i = 0, len = a.length; i < len; i++) { // Do something with a[i] }
приятнее на вид, но ограниченный идиома:
for (var i = 0, item; item = a[i++];) { // Do something with item }
Являются ли эти действительно общепринятые способы итерации? Не будут ли современные JavaScript-движки оптимизировать первый?
* Разве современные механизмы JavaScript просто не оптимизировали бы первый? * Да, они будут. Страница MDN неверна. Помните, что MDN написана обычными людьми, такими как я и вы. Кстати, последний фрагмент ужасен, потому что он остановит цикл на любом элементе массива без фальсификации. Я исправил страницу MDN. –
Как правило, не делайте странных вещей, потому что они «быстрее». Напишите очевидный код. Разработчики компилятора потратят больше времени на то, чтобы оптимизировать очевидный код, чтобы быть быстрым, и разработчикам обслуживания будет легче понять, что вы пытались сделать. Только сделайте странный изгиб, когда вы можете доказать, что он * заметно быстрее для * пользователя *, а не * измеримо * быстрее для некоторого теста бенчмаркинга. –
Конечно; Я был смущен, потому что предположил, что MDN является авторитетным источником, а во втором - вторым методом. –