function callDad () {
var numb = '0122822122';
console.log('Calling ' + numb);
}
callDad();
1) Поскольку функция callDad
объявлена глобально, она сохраняется в глобальном контексте выполнения перед вызовом.2) После вызова функции callDad
создается и выполняется новый контекст выполнения в стеке.
Вопрос: Что происходит с исходной ссылкой на функцию в глобальном контексте выполнения?Функция хранится дважды в памяти?
Дополнительные вопросы и ответы (для справки) :
Q: @Bergi Спасибо за ответ.Я думаю, что вопрос должен быть: так как глобальный контекст выполнения уже хранит функцию в памяти.Почему новый контекст выполнения имеет новую фазу создания?Спасибо
A: @Ash Фаза создания для переменных внутри тела вызываемой функции, особенно онемела в вашем примере
Q: @Rodrigo Так что, как только функция вызывается, на нее ссылаются изобъект окна?Поскольку ссылка в памяти и фаза создания уже существуют для объявлений функций, то почему они говорят, что каждый новый контекст выполнения имеет новую фазу создания?
A: Да, на функцию всегда ссылаются из оконного объекта.Контекст выполнения - это просто область действия и цепочка областей действия (переменные из других областей в замыканиях).Как только контекст выполнения создан, фаза создания выделяет память для переменных внутри этого контекста.О, и помните, что в JS у вас есть область действия функции, а не область блока.