Anastasia Zaytseva
Aug 31, 2018 · 1 min read

У меня вызвал вопрос пример про поднятие переменных. Действительно будет ошибка из-за переопределения переменной.

Я полагала, что для данного примера будет такая последовательность при запуске:

— — -Этап создания контекста выполнения, до запуска кода — -

  1. Интерпретатор нашел объявление функции

function foo(){ return 42 }

т.к. больше не определено функций с таким именем — то он записывает в VariableObject контекста свойство foo с ссылкой на данное определение функции.

2. Далее интерпретатор найдет объявление переменной var foo; с таким же именем, которое уже есть в VO данного контекста, и тут он не должен ничего менять в таком случае

— — Этап запуска кода — —

— Именно здесь и произойдет перетирка значения foo — при запуске кода?

    Anastasia Zaytseva

    Written by

    QA automation engineer & junior web developer