我知道 JavaScript 闭包的理论概念,比如内部函数只能访问一个变量等等,这样就可以在 JS 中实现私有变量。
但是我想要了解一些实际的例子,证明闭包确实有用。所以我需要实例,而不是了解什么是闭包。
但是我想要了解一些实际的例子,证明闭包确实有用。所以我需要实例,而不是了解什么是闭包。
两个标准示例:
1) 保存回调函数的变量:
var a = [1, 2, 3];
for (var i=0; i<a.length; i++) {
(function(j){
setTimeout(function(){
console.log(a[j]);
}, 1000*j);
})(i);
}
2) 保持变量私有化
var obj = (function(){
var private = 0;
return {
increment: function(){ private++; },
getValue: function(){ return private; }
}
})();
事实上,最简单的方法是记住一件事情:闭包是函数与其创建时所在作用域之间的链接。这个链接防止了作用域(及其变量)被垃圾回收,并且它是访问该作用域的唯一可访问链接(因此具有隐私性)。