В настоящее время я изучаю переменные и область видимости в JavaScript (из серии YDKJS Кайла Симпсона), и я думаю, что понимаю, как компилятор «выделяет память для переменной a
» в соответствующей области видимости, если он сталкивается с явным объявлением переменной, например как var a;
. Мой вопрос: в случае объявлений функций, таких как функция foo(a) {...};
, если a
еще не был объявлен как переменная в другом месте, компилятор "объявляет" эту переменную, чтобы она существовала в области действия функции? Или это a
"не существует", пока функция не будет вызвана foo(3);
и a
не присвоит значение?
Извините, если это не актуально или если это слишком просто. Я пытаюсь полностью понять идею области видимости и объявления переменных, и это стало тем, на что я не смог ответить или найти, проведя некоторое исследование.
Заранее спасибо!