Почему я могу получить доступ к переменной i вне цикла, в котором она использовалась?
Пример:
for (var i = 0; i <= 10; i++) {
console.log(i);
}
console.log(i, ' :вне цикла');
Почему я могу получить доступ к переменной i вне цикла, в котором она использовалась?
for (var i = 0; i <= 10; i++) {
console.log(i);
}
console.log(i, ' :вне цикла');
Вы можете получить доступ к переменной i, потому что она объявлена через var, а все переменные объявленные таким образом "всплывают" в начало родительской функции даже из вложенного блока.
var:function f() {
if (true) {
var variable = 10;
}
return variable;
}
console.log(f());
var на самом деле:function f() {
//Начало функции
var variable;
if (true) {
variable = 10;
}
return variable;
}
console.log(f());
Если вы хотите ограничить видимость данной переменной внутри цикла for, то используйте let вместо var.
for (let i = 0; i <= 10; i++) {
console.log(i);
}
console.log(i, ' :вне цикла');
Область видимости переменной объявленной через let ограничена блоком, в котором она объявлена.
for(let i = 0; i <= 10; i++).... – Чайник Oct 22 '18 at 10:04