ECMA-262 5.1, подразделы 10.4.2 и 10.4.2.1 относится к контексту вызова. Похоже, это больше нигде в документе не описано.
Цитируя спецификацию, акцент мой:
10.4.2 Ввод оценочного кода
Следующие шаги выполняются, когда элемент управления входит в контекст выполнения для кода eval:
- Если нет вызывающего контекста или если код eval не оценивается прямым вызовом (15.1.2.1.1) функции eval, тогда
10.4.2.1 Ограничения строгого режима
Код eval не может создавать экземпляры переменных или привязок функций в среде переменных вызывающего контекста, которая вызвала eval, если либо код вызывающего контекста, либо код eval является строгим кодом. . Вместо этого такие привязки создаются в новой среде VariableEnvironment, которая доступна только для кода eval.
Что означает контекст вызова в этих абзацах? Я предполагаю, что это относится к Контексту выполнения вверху. стека непосредственно перед вызовом
eval
; кто-нибудь может это проверить?Что означает отсутствие контекста вызова? Может ли кто-нибудь предоставить пример кода или условий, которые могут привести к вызову
eval
без контекста вызова?