内部関数によってのみアクセスできる変数があるなど、JavaScriptクロージャーの背後にある理論的概念を理解しています... JSでプライベート変数を実装するようなものです。
しかし、クロージャーが実際に役立つ実用的な例をいくつか理解したいと思いました。したがって、クロージャーとは何かを理解するのではなく、クロージャーの実際の使用例を理解するための例が必要です。
内部関数によってのみアクセスできる変数があるなど、JavaScriptクロージャーの背後にある理論的概念を理解しています... JSでプライベート変数を実装するようなものです。
しかし、クロージャーが実際に役立つ実用的な例をいくつか理解したいと思いました。したがって、クロージャーとは何かを理解するのではなく、クロージャーの実際の使用例を理解するための例が必要です。
2 つの標準的な例:
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; }
}
})();
実際、最も簡単なのは、 1 つのことを覚えておくことです: クロージャーとは何か、つまり、関数からそれが作成されたスコープへのリンクです。このリンクは、スコープ (およびその変数) がガベージされるのを防ぎ、このスコープへの唯一のアクセス可能なリンクです (したがってプライバシー)。