Javascript: прямой цикл, обратный цикл…

Jun 03, 2010 21:52


Прочитал, что цикл вида for(var j=testedArr.length; j--;){…} выполняется быстрее цикла вида for(var j=0; j «для большинства реализаций Javascript». Собственно, это хорошо известно. Сейчас я просто решил проверить.

Так вот, это действительно верно для всех браузеров, а в особенности - IE 8 (оный, между прочим, в своей обычной хамской манере вынудил ( Read more... )

программирование, chrome, ecmascript, ie

Leave a comment

(The comment has been removed)

torbasow June 4 2010, 05:19:47 UTC
В этом и разница. Вопросы в том, почему «Хрому» пофиг (а если ему пофиг, то не станет ли со временем пофиг и остальным браузерам?) и не слишком ли затуманивает смысл цикла то, что инкрементация впихнута в терминальное условие, а само оно проверяется через неявное преобразование типов (0 → FALSE).

Reply

Хром anonymous June 4 2010, 14:05:06 UTC
Хром использует для рендеринга webkit, а для js - V8 движок, который оптимизирует и преобразует js команды "виртуальной машины".
Подробней, насчет оптимизации:
http://code.google.com/intl/ru-RU/closure/compiler/

Reply

Re: Хром torbasow June 8 2010, 07:29:08 UTC
Оптимизатор по ссылке в моём коде ничего особенно не меняет: прямой цикл остаётся прямым, а обратный - обратным. Разве что при компиляции что-то меняется.

Reply

anonymous June 5 2010, 16:56:33 UTC
можно while юзать, если смущает инкремент в условии. мне for нравится больше while тем, что в первом выражении удобно заvarить сколько угодно переменных, которые нужны только в цикле

Reply

(The comment has been removed)

torbasow June 8 2010, 07:53:01 UTC
Так выходит немного помедленнее.

Reply


Leave a comment

Up