Сообщение от Dmitry A. Soshnikov
|
Физически же, эта абстракция представлена AO (для функции и eval'a) и Global - для Global'a.
|
Ещё поправка - eval берёт VO того контекста, в котором он запущен: если из функции - AO, если из Global - Global.
Сообщение от kefi
|
а сохраняется ли [[Scope]] (d), если функция d не содержит переменных из своего [[Scope]],
|
Да, сохраняется.
function a() {
var b = 10;
function c() {
function d() {
alert(b);
}
}
}
Функция "с" не использует переменные из внешнего VO (ещё говорят: не имеет свободных переменных). Однако, функция "d" - использует. И черпает из Scope, частью которого является [[Scope]] (т.е. Scope вышестоящего контекста). Для "d", [[Scope]] - это Scope(c), и если в "c" не будет ссылки на вышестоящий контекст (где находится "b"), "d" не увидит "b".