function f1() {
var n = 999
nAdd = function() {
n += 1
}
function f2() {
console.log(n);
}
return f2;
}
var result = f1();
result(); // 999
nAdd();
result(); // 1000
如上代码,是一个闭包函数
博文中理解的是
f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage collection)回收
不理解f2在哪里赋了全局变量???
var result = f1()
,这里f1()
的调用结果是f2
,所以是f2
赋值给全局变量result
。了解闭包,看这篇:还搞不懂闭包算我输(JS 示例)