var test = function() { var val = 0; var add = function(num) {
val += num; return val;
}; return add;
};var instance = test();console.log(instance(3)); // 3console.log(instance(4)); // 7看了一个资料,说instance 是一个闭包。由 add 函数, 和创建 add 函数时的环境(变量 val)组成,不理解......
1 回答

qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
instance
是什么?是test
函数的返回值。test
函数的返回值是什么?是add
。add
是什么?add是个函数。
所以instance
是test
返回的一个函数。
这个函数是不是闭包?只要看函数里有没引用到函数定义外面的变量就可以了。
看add
的定义,发现用到了在外面的val
,所以是个闭包。
当然不是所用引用了外部变量的就是闭包,引用的外部变量的函数还要被返回到外部作用域外的地方。
添加回答
举报
0/150
提交
取消