Что происходит, когда две переменные поднимаются с одинаковым именем? - PullRequest
0 голосов
/ 26 июня 2019

Итак, если я объявляю две переменные следующим образом:

var a = 5;
var b = 10;

Javascript компилирует код, и до тех пор, пока не произойдет присваивание, эти переменные будут undefined.

Но если я напишу так:

var a = 5;
var a = 10;

что происходит, когда эти переменные поднимаются? У них обоих есть имя a и они undefined? Или, может быть, это одна переменная и undefined записывается в ней дважды?

1 Ответ

1 голос
/ 26 июня 2019

Подъем здесь не очень актуален. Вы не можете иметь две переменные с одинаковым именем в одной области видимости. Сколько раз вы пишете var a, есть только одна переменная a, которая поднимается не иначе, чем если бы у вас был один var a.

Этот код ...

function() {
  var a = 5;
  var a = 10;
}

функционально эквивалентен этому коду, a поднял:

function () {
  var a;
  a = 5;
  a = 10;
}
...