Замыкания. Почему в этом случае удаляется lexical environment родительской функции?
В переменную g у вас записывается ссылка на функцию, которая вернулась из f(). Пока эта ссылка доступна из глобального контекста (через g), функция сохраняется в памяти. Весь контекст, связанный с функцией, также сохраняется, поскольку тоже доступен из глобального контекста (через g и функцию).
Присваивая переменной null вы, тем самым, делаете функцию и связанный с ней контекст недоступными из глобального контекста. Значит при следующем проходе сборщик мусора удалит их как неиспользуемые.
В переменную g у вас записывается ссылка на функцию, которая вернулась из f(). Пока эта ссылка доступна из глобального контекста (через g), функция сохраняется в памяти. Весь контекст, связанный с функцией, также сохраняется, поскольку тоже доступен из глобального контекста (через g и функцию).
Присваивая переменной null вы, тем самым, делаете функцию и связанный с ней контекст недоступными из глобального контекста. Значит при следующем проходе сборщик мусора удалит их как неиспользуемые.