私は過去 3 か月から JavaScript で作業していますが、クロージャーについて何かを理解できません:
- この言語で正確に解決された問題は何ですか?
- いつ閉鎖を使用する必要がありますか?
- それはパフォーマンスに関連していますか、それともベストプラクティスの唯一のケースですか?
JavaScript クロージャーはどのように機能しますか?を読みました。、かなり良い説明がありますが、上記の質問の回答を得ることができません。
私は過去 3 か月から JavaScript で作業していますが、クロージャーについて何かを理解できません:
JavaScript クロージャーはどのように機能しますか?を読みました。、かなり良い説明がありますが、上記の質問の回答を得ることができません。
クロージャーの例を次に示します。
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);
}
クロージャは、関数のコンテキスト情報を保持します。この例では、カウンターと項目配列の場合、クロージャーは数値を保持します。クロージャーを使用しないと、conter が変更され、すべてのアラートが未定義と表示されます (var i は 3 になるはずです)。
あなたはクロージャーを使用していますが、気づいていないかもしれません。それらをいつ使用するかについての規則はありません。他の関数内で関数を宣言すると、クロージャーが作成されます。この例では、必要なデータだけでクロージャーを作成しました。しかし、displayItem 関数は、彼が items 配列にアクセスできるようにするクロージャーを作成しました。
クロージャを使用すると、ブラウザがより多くのデータをメモリに保持するように強制されるため、パフォーマンスの問題が発生する可能性があります。そのため、人々はそれをパフォーマンスやベストプラクティスとして使用するのではなく、いくつかの問題を解決するための単なる別のツールです。