локальные необъявленные переменные становятся глобальными.Где в документе они в конечном итоге? - PullRequest
0 голосов
/ 23 декабря 2018

Мне не хватает понимания, что происходит с необъявленной переменной и где она заканчивается в документе.Например,

var a = 1;
function b() {
  a = 10;
  return;
  function a() {}
}
b();
console.log(a);

с подъемом станет

function b () {
  function a() {}
   a = 10;
   return;
}

var a;
a = 1;
b();

console.log(a); // output 1

a = 10 назначается для функции внутри функции b.Это оставляет a = 1 для присваивания var a объявления.Теперь, если мы закомментируем функцию a, мы получим другой вывод.

function b () {
 // function a() {}
   a = 10;
   return;
}

var a;
a = 1;
b();

console.log(a); // output 10

Итак, теперь a = 10 назначается необъявленной переменной, поэтому она становится глобальной, так как именно это выглядит?Из-за изменяющейся мутации он будет помещен внизу документа, например, так:

function b () {
 // function a() {}

   return;
}

var a;
a = 1;
b();
a = 10;

console.log(a); // output 10

Это правильно?

...