Задать вопрос

Чем отличается scope от лексического окружения?

Есть два понятия LE и scope. Не совсем понятно в чем отличия. Говорят что scope вообще не существует, но в учебниках часто говорят именно о нем
  • Вопрос задан
  • 768 просмотров
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Выскажу мнение: я всегда считал, что это одно понятие.

Scope — это окружение, в котором исполняется код функции, когда функция вызывается обычным образом.
Для обеспечения статического связывания переменных и аргументов, которое также называется лексическим замыканием, спецификация JS предполагает, что во время создания функции-как-объекта у неё появляется поле [[Scope]], которое содержит контекст исполнения, в котором функция создана, и в качестве прототипа использует [[Scope]] контекста (обычно, [[Scope]] той функции, в теле которой создана рассматриваемая функция). Когда функция вызывается, она использует этот свой [[Scope]] для того, чтобы создать контекст исполнения своего кода.
Подробнее: javascript.ru/ecma/part10 (намеренно даю ссылку на 3-ю редакцию)
Поэтому мне не понятно, почему кто-то говорит, что scope не существует, когда его существование явно требуется спецификацией языка. Разве что в том смысле его не существует, что интерпретатор не обязан явно этот объект создавать, но и об этом спецификация говорит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы