Почему переменные подъема JavaScript? - программирование
Подтвердить что ты не робот

Почему переменные подъема JavaScript?

Почему JavaScript поднимает переменные?

Каково было обоснование дизайнеров, когда они решили осуществить подъем? Есть ли другие популярные языки, которые делают это?

Пожалуйста, предоставьте соответствующие ссылки на документацию и/или записи.

4b9b3361

Ответ 1

Как объясняет Стоян Стефанов в книге "Шаблоны JavaScript", подъем является результатом реализации интерпретатора JavaScript.

Интерпретация кода JS выполняется в два этапа. Во время первого прохода интерпретатор обрабатывает объявления переменных и функций.

Второй проход - это фактический шаг выполнения кода. Интерпретатор обрабатывает выражения функций и необъявленные переменные.

Таким образом, мы можем использовать концепцию "подъема" для описания такого поведения.

Ответ 2

Это потому, что интерпретатор JavaScript интерпретирует код в два цикла.

  1. Завершение/компиляция кода:
  2. Выполнение кода:

В 1-м цикле все объявления переменных и функций переносятся в верхнюю часть области функции, в которой они выполняются. Это помогает в создании variableObjects объектов для execution context выполнения функции еще до ее выполнения.

На втором этапе присваивание значений, операторы кода и вызовы функций происходят построчно ожидаемым образом.

У вас есть немного более подробное прочтение здесь.

Это даст вам лучшее представление о поведении вокруг объявлений let, const и class, а также о приоритете, который следует между переменной и функциями.