На самом деле, этот код устарел. Рекомендуется использовать let
вместо var
(, см. Этот вопрос в StackOverflow и объявить его внутри оператора for:
for (let i = 0; i < 5; i++) {
console.log(i); // 0, 1, 2, 3, 4
}
console.log(i); // undefined variable i
let
определяет переменная области видимости блока. Эта переменная не будет "пузыриться" до глобальной области видимости, будучи более эффективной, не загрязняя глобальную область видимости.