Aug 31, 2018 · 1 min read
У меня вызвал вопрос пример про поднятие переменных. Действительно будет ошибка из-за переопределения переменной.
Я полагала, что для данного примера будет такая последовательность при запуске:
— — -Этап создания контекста выполнения, до запуска кода — -
- Интерпретатор нашел объявление функции
function foo(){ return 42 }
т.к. больше не определено функций с таким именем — то он записывает в VariableObject контекста свойство foo с ссылкой на данное определение функции.
2. Далее интерпретатор найдет объявление переменной var foo; с таким же именем, которое уже есть в VO данного контекста, и тут он не должен ничего менять в таком случае
— — Этап запуска кода — —
— Именно здесь и произойдет перетирка значения foo — при запуске кода?