Показать сообщение отдельно
  #93 (permalink)  
Старый 22.11.2012, 04:48
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Очень простой приём "эмуляции" forEach
Может быть кому-то будет интересно.

Лично я использую forEach вместо for не только благодаря скрытию переменных от верхней области видимости, но и благодаря возможности именовать текущий элемент массива:
items.forEach( function( *!*item*/!*, i ){
   //...
});

вместо
for( var i = 0; i < items.length; i++ ) {
   //...
}


Согласитесь, item выглядит красивее, нежели items[i], особенно если использовать цикл в цикле: items[i][j][k].

Но, иногда, for лучше подходит для решения задачи: во-первых он в два раза быстрее (если использовать IE fallback, то и более, чем в два раза), что важно в сложных проектах, во-вторых можно менять массив как пожелаешь, так как количество итераций динамично и зависит от текущей длины массива, а не той, которая была в начале цикла.
items.splice( i--, 1 ); // такое не прокатит в forEach


Простое, но несколько громоздкое решение именования текущего элемента итерации:
for( var i = 0, item = items[ 0 ]; i < items.length; item = items[ ++i ] ) {
   //...
}
Теперь item === items[0].
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием