Хороший пост!

И у меня есть вопрос о сборе мусора (локальной переменной) внутри замыканий:

function foo() { var a = 2; функция возврата() {console.log(a)}

var f = foo();

f = не определено;

В приведенном выше примере переменная a никогда не будет освобождена, пока для замыкания f не будет установлено значение undefined.

Что меня смутило, так это то, по какой причине замыкание может захватывать переменную a. Замыкание никогда не выполнялось, поэтому контекст выполнения замыкания не существует.

Но почему была захвачена переменная a?