tes*_*dtv 3 javascript closures
我理解Javascript闭包背后的理论概念,比如有一个只能通过内部函数访问的变量以及所有......在JS中实现私有变量.
但我想了解一些实际的例子,其中闭包实际上是有用的.所以我需要的例子不是要了解闭包是什么,而是Closure的实际用例.
两个标准示例:
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);
}
Run Code Online (Sandbox Code Playgroud)
2)保持变量私有
var obj = (function(){
var private = 0;
return {
increment: function(){ private++; },
getValue: function(){ return private; }
}
})();
Run Code Online (Sandbox Code Playgroud)
实际上最简单的是记住一件事:什么是闭包,即从函数到创建它的作用域的链接.此链接可防止范围(及其变量)被包含,并且它是此范围的唯一可访问链接(因此隐私).