Перечитываю тут статейку
learn.javascript.ru/closures и созрел у меня один вопрос.
var myFunc = (function wrap(arg){
// При вызове этой функции в ее LexicalEnvironment записывается аргумент arg
arg.b = 2;
return function closest(){
//Эта функция получает свойство [[Scope]], ссылающееся на область видимости функции wrap
}
})({b:3});
Вопрос: что же это получается - объект arg будет висеть в памяти до тех пор, пока будет существовать функция myFunc? Ведь по логике, у closest хранится ссылка на область видимости myFunc, а у myFunc в LexicalEnvironment есть ссылка на объект arg. А спецификация гласит, что объект будкет в памяти до тех пор, пока на него есть ссылки.