JavaScript имеет только область функций. Таким образом, переменные, объявленные для циклов for, видны для всей функции.
Например,
function foo() {
for(var i = 0; i < n; i++) {
// Do something
}
// i is still in scope here
}
Когда у нас есть несколько for-loops, это открывает вопрос о том, как мы обрабатываем переменные в этих других циклах.
Используем ли мы другую переменную?
for(var i = 0; i < n; i++) { }
for(var j = 0; j < n; j++) { }
Или мы используем одну и ту же переменную, но просто присваиваем значение (вместо объявления)?
for(var i = 0; i < n; i++) { }
for(i = 0; i < n; i++) { }
Или объявить i
вне циклов?
var i;
for(i = 0; i < n; i++) { }
for(i = 0; i < n; i++) { }
Или redeclare i
?
for(var i = 0; i < n; i++) { }
for(var i = 0; i < n; i++) { }
Все эти работы (или, по крайней мере, они используются в последних версиях моих браузеров). JSHint не любит последний подход.
Есть ли подход, который является наиболее идиоматическим или иным образом предпочтительным?