@Ivanushka255

Что обрабатывается интерпретатором раньше — function declaration или глобальные переменные?

Читаю на MDN про глобальные переменные, которые объявляются с помощью оператора var:
MDN
Объявление переменной всегда обрабатывается до выполнения кода, где бы она ни находилась.


Также читаю про function declaration:
learn.js
В отличие от переменных, объявленных с помощью let, они полностью инициализируются не тогда, когда выполнение доходит до них, а раньше, когда создаётся лексическое окружение.


Что все-таки считывается интерпретатором в первую очередь?

И кстати, получается, что глобальные переменные объявленные с помощью let, обрабатываются позже таких же глобальных переменных, объявленных с помощью var?
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
vmakhnyuk
@vmakhnyuk
Frontend developer
есть термин объявление и присвоение.
Фишка var переменных, то что они всплывают - их объявление "вспылвает", а вот присвоение значения происходит на той точке, где вы записываете в нее значение:
console.log(foo); // undefined - не ошибка
var foo = 5;
console.log(foo); // 5

В первой строке программы происходит так называемый rhs-поиск(поиск по значениею), поскольку объявление переменной foo всплыло и ошибки не будет.

Теперь по поводу funcion и переменные:
объявление функции тоже всплывает, но позже чем переменная через var:
var a = 5;
function a() {
    return 5;
}

console.log(a) // 5
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы