В JavaScript: переменная параметра функции (в момент объявления функции) эквивалентна объявлению переменной? - PullRequest
0 голосов
/ 26 апреля 2018

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

Извините, если это не актуально или если это слишком просто. Я пытаюсь полностью понять идею области видимости и объявления переменных, и это стало тем, на что я не смог ответить или найти, проведя некоторое исследование.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Да, параметр указанной функции является объявлением, как и var a. Когда вводится область действия (в данном случае область действия функции), память резервируется для всех объявленных переменных. Затем он инициализируется переданным аргументом (3) или undefined, если аргумент не был передан.

0 голосов
/ 26 апреля 2018

a не назначается, пока не будет вызвана функция. Ваше второе предположение верно.

...