Я всегда вношу переменную в цикл.
Исхожу из идеи что переменные должны быть объявлены как можно ближе к тому месту где используются.
Есть нюансы, что переменная, объявленная в цикле с помощью var
будет продолжать существовать в лексической области видимости (т.е. внутри функции) даже после завершения цикла. Некоторые линтеры ругаются на такие переменные. На практике они никогда не приносили проблем (разве что только в коде абсолютных новичков).
Вторая вещь - если ты не пишешь под старые браузеры (ie9) или пользуешься транспайлером, то можно пользоваться let
и const
, семантика которых ограничивает область видимости переменных блоками кода. Т.е. переменная объявленная с помощью let
и const
будет доступна только в цикле, блоке ветвления итд. let
используется для переменных, значения которых будут “затираться”, const
- переменные значения которых не будут перетираться.
Итого:
for (let i = 0; i < array.length; i++) {
const step = i * i;
array[i] += step;
}