Цитата с
learn.javascript.ru
В следующем коде, после того как g станет недоступным, лексическое окружение функции (и, соответственно, value) будет удалено из памяти:
function f() {
let value = 123;
function g() {
alert(value);
}
return g;
}
let g = f(); // пока g существует, соответствующее лексическое окружение существует
g = null; // ...а теперь память очищается
Я не понимаю почему лексическое окружение родительской функции будет удалено из памяти. Ведь мы по сути только очистили переменную
g
и сказали, что там ничего нет -
g = null
. Сама же вложенная функция осталась, ее никто не удалял.
Либо же здесь имеется в виду, что в строке
let g = f();
есть вызов родительской функции, которая выполняясь, создает лексическое окружение. Поэтому меняя значение переменной на
null
, мы просто убираем вызов этой родительской функции? Как? Что здесь имеется в виду?