Как возвращенный из функции объект, запоминает свое лексическое окружение?
function outer() {
var a = 10;
function solve() {
return a + 2;
}
return {
b : 20,
c : a + 1,
d : solve()
}
}
var obj = outer();
console.log(obj.c); //11
console.log(obj.d); //12
Возвращаемый объект хранится в LexicalEnvironment->EnvironmentRecord функции outer?
При выходе из функции outer ее ExecutionContext удаляется из стека, но так как LexicalEnvironment хранится в куче, то он хранится до тех пор, пока на него есть хоть одна ссылка. Т.е. через возвращенный объект я удерживаю ссылку на LE и не даю его удалить?