4

内部関数によってのみアクセスできる変数があるなど、JavaScriptクロージャーの背後にある理論的概念を理解しています... JSでプライベート変数を実装するようなものです。

しかし、クロージャーが実際に役立つ実用的な例をいくつか理解したいと思いました。したがって、クロージャーとは何かを理解するのではなく、クロージャーの実際の使用例を理解するための例が必要です。

4

1 に答える 1

9

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 つのことを覚えておくことです: クロージャーとは何か、つまり、関数からそれが作成されたスコープへのリンクです。このリンクは、スコープ (およびその変数) がガベージされるのを防ぎ、このスコープへの唯一のアクセス可能なリンクです (したがってプライバシー)。

于 2013-03-15T07:27:35.773 に答える