Область видимости переменной var

118
02 марта 2019, 06:10

Почему я могу получить доступ к переменной i вне цикла, в котором она использовалась?

Пример:

for (var i = 0; i <= 10; i++) { 
  console.log(i); 
} 
 
console.log(i, ' :вне цикла');

Answer 1

Вы можете получить доступ к переменной 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 ограничена блоком, в котором она объявлена.

READ ALSO
Почему JQuery работает только для одного элемента?

Почему JQuery работает только для одного элемента?

Всем привет у меня есть таблица, куда элементы наполняются через forEach, и есть JQuery скрипт, ajax который отправляет запросы на сервакНо почему...

163
event.PageX, event.PageY

event.PageX, event.PageY

При перемещении курсора над элементом (подозреваю mousemove) требуется фиксировать два значения позиции курсораНапример по оси Х

212
Связь положений XYZ камеры и игрока

Связь положений XYZ камеры и игрока

Вообще, просто нужно сделать так, что бы камера и тело игрока поворачивались одинаково, ибо без этого нельзя сделать нормальную ходьбу, потому...

164
Как запустить несколько корутин в Unity

Как запустить несколько корутин в Unity

Всем приветНачал работать с одним проектом

161