- testClosureは、2 つの引数を受け入れて無名関数を返す名前付き関数を呼び出し、t1 を無名関数に設定します。
t1 は、呼び出すことができ、1 つの引数を受け入れる無名関数になりました。t1 が呼び出されると、name 関数と無名関数から文字列 param 引数を作成し、結果を返します。
名前付き関数 testClosure を呼び出すたびに、クロージャーが作成されます。匿名関数を呼び出すと、囲まれた名前の関数文字列パラメーターにアクセスし、3 つのパラメーターすべてを構築された string として返します。
JS のクロージャは、JavaScript が提供する最も強力な実装の 1 つです。実装する方法と場所、または閉鎖が必要な場所の学習は、一定期間の赤ちゃんのステップによって学習されます。
JavaScript ライブラリが大きくなればなるほど、クロージャが必要になります。
クロージャーを使用すると、特定のデータを他のコンテキストの手が届かないコンテキストに置くことができます。私はクロージャーを他のどこよりもループ内で使用していることに気づきました。
ほとんどの場合、無名関数とクロージャーは連携して機能します。クロージャーを学ぶ最善の方法は、クロージャーについて毎日少しずつ学び続けることです。そうすれば、クロージャーが必要な状況に陥ったときに、最終的にそれを得ることができます。
以下は、リモート サーバー上のフォト アルバムに対して AJAX 呼び出しを行っている例です。AJAX 呼び出しの成功関数は、アルバムの写真の配列を保持します。ループごとに、無名関数を返す名前関数を呼び出しています。ボタンクリックイベントに無名関数を設定します。
DOM に追加されたすべての新しいボタンは、囲まれた独自の URL 文字列パラメーターにアクセスできます。
優れた JavaScript プログラマーになるには、クロージャーを学び、理解することが不可欠です。
function testClosure(url) {
return function (ev) {
document.getElementById('myImg').url = url || 'http://www.dummyurl/dummy.png';
}
}
$.ajax({
type: "post",
url: "http://www.myurl.com",
data: 'photoalbum' = 45,
dataType: "json",
success: function (photos) {
for (var i = 0; i < photos.length; i++) {
var btn = document.createElement('input');
btn.type = 'button';
btn.onclick = testClosure(photos[i].url);
document.body.appendChild(btn);
};
}
});