js中的闭包是如何工作的?
爱因斯坦有一个观点:一个东西,如果你不能向一个6岁的孩子解释,说明你对它还不够理解。
对闭包通常的解释是:像下面这样
function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + (++tmp));
}
}
var bar = foo(2); // bar is now a closure.
bar(10);
每次调用bar都会改变foo中tmp的值,
此时bar就是一个闭包。
如果是6岁,想到一个稍通俗的描述:闭包就是一个叼炸天的包子,你拿它沾醋的时候,它可以把同一笼的其他包子也变酸了,这个蒸笼就是一个闭包。
求更好的解释。
actfate
10 years, 2 months ago