Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Стандартная реализация forEach (https://javascript.ru/forum/misc/43851-standartnaya-realizaciya-foreach.html)

okouser 23.12.2013 23:58

Стандартная реализация forEach
 
empty

nerv_ 24.12.2013 00:52

открою тайну: современные браузеры это
this.length

кэшируют

Maxmaxmaximus6 24.12.2013 07:38

на чем основано утверждение что var len = arr.length работает быстрее чем просто arr.length?

Яростный Меч 24.12.2013 14:20

Цитата:

Сообщение от Maxmaxmaximus6
на чем основано утверждение что var len = arr.length работает быстрее чем просто arr.length?

типа, меньше доступов через точку. думаю, разница в скорости минимальна.

а по сабжу - категорически не следует менять массив внутри forEach.
если оное встретилось в собственном коде - сразу переписать на for, от греха подальше.

Яростный Меч 24.12.2013 16:55

Цитата:

Сообщение от okouser
Потому что значение кэшируется, и не нужно каждый раз обращаться к соответствующему свойству.
http://jsperf.com/browser-diet-cache-array-length/10

довольно неоднозначные результаты, на последних версиях FF и Хрома выгоды кэширования нет.
да и тест искусственный - если дать нагрузку внутрь цикла, разница будет ерундовая даже там, где сейчас имеет место.

Цитата:

Сообщение от okouser
Вообще-то идея темы и в моделях работы браузеров. Непонятно, почему реализация forEach в Chrome отличается от остальных.

идея темы - да.
только над ней есть другая, более фундаментальная идея - "неизвестно, как работает forEach сегодня, и как он будет работать завтра", в связи с чем коллекцию нельзя изменять. Это не только в js, кстати. В некоторых языках вообще ошибка выскакивает.


Часовой пояс GMT +3, время: 09:17.