ホームページ > ウェブフロントエンド > jsチュートリアル > 自己実行匿名関数を使用して、for ループでクロージャを使用する問題を解決する_javascript スキル

自己実行匿名関数を使用して、for ループでクロージャを使用する問題を解決する_javascript スキル

WBOY
リリース: 2016-05-16 16:36:28
オリジナル
1306 人が閲覧しました

このコードは、予想される 0 ~ 9 の代わりに 10 10 を出力します。これは、クロージャーに i への参照が含まれており、関数の実行時に i が 10 になっているためです

function f1(){
for(var i = 0; i < 10; i++) {
setTimeout(function() {
alert(i); 
}, 1000);
}
}
f1();
ログイン後にコピー

上記の問題を解決するには、自己実行匿名関数を使用できます

function f2(){
for(var i = 0; i < 10; i++) {
(function(e) {
setTimeout(function() {
alert(e); 
}, 1000);
})(i);
}
}
f2();
ログイン後にコピー

ここの匿名関数は i をパラメータとして取り、ここの e は i のコピーを持ち、参照は e への参照であるため、上記の問題は回避されます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート