Chrome уже оптимизирует, mraleph продемонстрировал, как они компилируются в один и тот же код ASM. Это не исключено.

ожу практику кеширования массиваlength собственность внутриfor петля довольно неприятная. Как в,

for (var i = 0, l = myArray.length; i < l; ++i) {
    // ...
}

По крайней мере, на мой взгляд, это сильно ухудшает читабельность по сравнению с простым

for (var i = 0; i < myArray.length; ++i) {
    // ...
}

(не говоря уже о том, что он пропускает другую переменную в окружающую функцию из-за природы лексического объема и подъема.)

Я хотел бы быть в состоянии сказать любому, кто делает это, "не беспокойтесь; современные JS JITers оптимизируют этот трюк". Очевидно, что это не тривиальная оптимизация, поскольку вы можете, например, изменить массив во время его итерации, но я думаю, учитывая все сумасшедшие вещи, которые я слышал о JITers и их приемах анализа времени выполнения, они бы уже добрались до этого.

У кого-нибудь есть доказательства, так или иначе?

И да, я бы тоже хотел, чтобы было достаточно сказать: «это микрооптимизация; не делайте этого, пока не напишите». Но не все прислушиваются к такой причине, особенно когда становится привычкой кешировать длину, и они просто делают это автоматически, почти как выбор стиля.

Ответы на вопрос(3)

Ваш ответ на вопрос