-1

私は過去 3 か月から JavaScript で作業していますが、クロージャーについて何かを理解できません:

  1. この言語で正確に解決された問題は何ですか?
  2. いつ閉鎖を使用する必要がありますか?
  3. それはパフォーマンスに関連していますか、それともベストプラクティスの唯一のケースですか?

JavaScript クロージャーはどのように機能しますか?を読みました。、かなり良い説明がありますが、上記の質問の回答を得ることができません。

4

1 に答える 1

2

クロージャーの例を次に示します。

var items = ["a","b", "c"];
var displayItem = function (i) {
    return function () {
        alert(items[i]);
    }
}

for (var i = 0; i < items.length; i++) {
    window.setTimeout(displayItem(i), 100);
}
  1. クロージャは、関数のコンテキスト情報を保持します。この例では、カウンターと項目配列の場合、クロージャーは数値を保持します。クロージャーを使用しないと、conter が変更され、すべてのアラートが未定義と表示されます (var i は 3 になるはずです)。

  2. あなたはクロージャーを使用していますが、気づいていないかもしれません。それらをいつ使用するかについての規則はありません。他の関数内で関数を宣言すると、クロージャーが作成されます。この例では、必要なデータだけでクロージャーを作成しました。しかし、displayItem 関数は、彼が items 配列にアクセスできるようにするクロージャーを作成しました。

  3. クロージャを使用すると、ブラウザがより多くのデータをメモリに保持するように強制されるため、パフォーマンスの問題が発生する可能性があります。そのため、人々はそれをパフォーマンスやベストプラクティスとして使用するのではなく、いくつかの問題を解決するための単なる別のツールです。

于 2013-06-27T11:25:00.063 に答える