Я бачив безліч питань, які пропонують використовувати:
for (var i = 0; i < myArray.length; i++){ /* ... */ }
замість:
for (var i in myArray){ /* ... */ }
для масивів через непослідовну ітерацію ( див. тут ).
Однак я, здається, не можу знайти нічого, що, здається, віддає перевагу об'єктно-орієнтованому циклу:
myArray.forEach(function(item, index){ /* ... */ });
Що здається мені набагато інтуїтивнішим.
Для мого поточного проекту сумісність з IE8 важлива, і я розглядаю можливість використання поліфіла Mozilla , однак я не впевнений на 100%, як це буде працювати.
- Чи є якісь відмінності між стандартом for loop (перший приклад вище) та реалізацією Array.prototype.forEach сучасними браузерами?
- Чи є якась різниця між сучасними реалізаціями браузера та реалізацією Mozilla, пов’язаною з вищезазначеним (з особливою увагою до IE8)?
- Продуктивність - це не така велика проблема, а лише узгодженість того, які властивості переглядаються.
break
Вийти неможливоforEach
. Але великою перевагою є створення нової області дії з функцією. З поліфілом у вас не повинно виникнути проблем (принаймні, я не стикався з ними).