0

特定の現象を説明するためにJavaScriptで使用されている用語を忘れました。これは、インライン関数で変数にアクセスする方法に関連しています。理論もよくわかりません。次のコードをぼんやりと思い出します

for(var c = 0; c< 10; c++)
{
  arrayOfObjects[c].onclick = function() {alert(c); };
}

また、オブジェクトをクリックすると、アラートウィンドウに常に10が表示されたことを覚えています。その後、JavaScriptのすべてがオブジェクトであるため、誰かが説明しました。function(){blah}でさえ、実行時に評価されるオブジェクトであるため、変数スコープと混同されています。

このフェノンメノンを説明する用語は、文字eで始まったと思います。それは、包み込む、カプセル化する、閉じ込める、またはそのようなものでした。

私が探している用語は何ですか?

4

2 に答える 2

2

あなたが探している用語は(en)Closureです

enを無視します

于 2012-04-28T19:39:24.187 に答える
0

サンプルコードでは、効果的なCLOSUREは次のようになります。

for(var c = 0; c< 10; c++) {

    arrayOfObjects[c].onclick = function(cc) {

        // cc is sustained in here

        return function () {

            alert(cc);

        }

    }(c);

}

outter関数は、最後のおかげですぐに実行され、()「c」が「cc」として渡されます。次に、内部関数が「構築」され、onclickに対して返されます。この格納された内部関数が後で実行されるとき、それはその構築時のように「cc」への参照を保持します。

于 2012-04-29T10:53:11.613 に答える