3

出典: フリー百科事典ウィキペディア: Closure (コンピューター サイエンス)

コンピューター サイエンスでは、クロージャーは、1 つ以上のバインドされた変数を含む環境で評価される関数です。呼び出されると、関数はこれらの変数にアクセスできます。クロージャーの明示的な使用は、関数型プログラミングや、ML や Lisp などの言語に関連付けられています。他の言語のオブジェクトなどの構造体もクロージャでモデル化できます。

これを JavaScript 内で使用するには、これがどのように適用されるかの例を教えてもらえますか?

4

3 に答える 3

11

「javascript クロージャー」を検索すると、有望なリンクがたくさん見つかりました。上位 3 つは次の 2 つです (3 番目のリンクは 2 番目のリンクを再フォーマットしたものです)。

これらが役に立たなかった場合は、理由を説明してください。そうすれば、私たちは実際に手助けできる立場にいます。質問する前に検索しなかった場合は、次回は検索してください:)

于 2008-10-17T14:37:44.870 に答える
4

(jQuery の例を使用)

function SetClassOnHover(className){
  $("td").hover(
    function () {
      $(this).addClass(className);
    },
    function () {
      $(this).removeClass(className);
    }
  );
}

変数 className が各関数のスコープ内で使用されると、クロージャーが機能します。SetClassOnHover が終了すると、関数が呼び出されたときにその値にアクセスするために、両方の関数が className のハンドルを保持する必要があります。それが閉鎖によって可能になるものです。

于 2008-10-17T14:40:24.710 に答える
1

クロージャーの実用的な例は、次のような「プライベート」変数を作成するために使用される場合です。

function incrementer(){
    var i=0;
    this.increment=function(){
        i++;
    }
    this.get=function(){
        return i;
    }
}

i にアクセスする唯一の方法はメソッド get を使用することであり、それを変更する唯一の方法はメソッド increment を使用することです。クラスでは、プライベート変数をエミュレートするためにこれを行うことができます。

于 2011-02-22T22:50:25.020 に答える