3
我理解Javascript关闭背后的理论概念,就像有一个只能由内部函数访问的变量一样......所以在JS中实现私有变量。Javascript关闭的实际用法/示例
但我想了解一些实际的例子,其中闭包实际上是有帮助的。所以我需要示例不要了解闭包是什么,但是实际使用Closure。
我理解Javascript关闭背后的理论概念,就像有一个只能由内部函数访问的变量一样......所以在JS中实现私有变量。Javascript关闭的实际用法/示例
但我想了解一些实际的例子,其中闭包实际上是有帮助的。所以我需要示例不要了解闭包是什么,但是实际使用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);
}
2)保持私有变量
var obj = (function(){
var private = 0;
return {
increment: function(){ private++; },
getValue: function(){ return private; }
}
})();
其实最简单的就是记住一个事:什么是交流losure,这是从函数到创建它的范围的链接。这个链接可以防止作用域(及其变量)被垃圾回收,并且它是这个作用域的唯一可访问的链接(因此隐私)。
可能的重复[JavaScript关闭如何工作?](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)我认为这个问题应该已经关闭,也不是建设性的,但它在这里。 – gdoron 2013-03-15 07:25:53
这个问题可能更适合[programmers.se]。这里感觉太开放了。 – 2013-03-15 07:27:37
两件事情1),使得它们的值不会被访问它们的其他函数无意地修改。 2)如果你安装了一个使用javascript的浏览器插件,将会有一个与你的变量同名的全局变量会发生什么? – gaurav 2013-03-15 07:32:41