2016-10-28 5 views
0

Я программировал в течение 5 лет, но я только начал что-то задавать. В этом примере кода я возвращаю значение из функции и сохраняю ее переменную. В каком порядке это происходит? Имеет ли значение интерпретация или компиляция языка?Возвращаемые значения в javascript

function foo() { 
    return "junk"; 
} 

var bar = foo(); 

Теперь я знаю, что бар = «мусор». В каком порядке это происходит? Я знаю, когда функция вызывается, она возвращает элемент управления обратно к функции, вызывающей его, и программа возобновляет то, где она была остановлена, значит, это означает, что она возвращается обратно в «var bar =»?

И на динамически типизированном языке, как создается бар изначально? Он создан в куче?

+0

Это происходит в хронологическом порядке –

+0

Вот [полезное видео] (https://youtu.be/QyUFheng6J0?t=6m47s) – nem035

ответ

1

Все вызовы функций в javascript выполняются как стек кадров.

В вашем случае, когда происходит вызов «foo», создается фрейм стека для полного вызова функции «foo», и этот фрейм содержит все переменные foo и их информацию.

Если в foo вызывается другая функция, для этой функции создается другой стек стека.

Вы знаете, что поведение стека прямо, последнее в первом порядке. Здесь функция внутри foo (если существует) выполняется первым и выходит из стека. и следующий поворот - «foo».

Затем «foo» выполняет и выходит из стека, и теперь появляется переменный поворот (в вашем случае это «бар»).

Смежные вопросы