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