ホームページ  >  記事  >  ウェブフロントエンド  >  Javascript の setTimeout()_javascript ヒントのクロージャー機能を使用するときに注意する必要がある問題

Javascript の setTimeout()_javascript ヒントのクロージャー機能を使用するときに注意する必要がある問題

WBOY
WBOYオリジナル
2016-05-16 16:35:531442ブラウズ

setTimeout は、特定の関数の実行を遅らせるためによく使用されます。使用方法は次のとおりです。

コードをコピーします コードは次のとおりです:
setTimeout(function(){

}、タイムアウト);

setTimeout(function...,0) は、たとえば次のように非同期処理に使用されることがあります。

コードをコピーします コードは次のとおりです:
関数 f(){
… // 準備をしましょう
setTimeout(function(){
…. // 何かをしてください
}, 0);

戻る …;
}


関数 f は、setTimeout で設定された関数プロセッサの前に戻ります。 非同期処理を使用する場合、特にクロージャ機能を使用する場合は特に注意してください。

例:

コードをコピーします

コードは次のとおりです: for(var i = 0; i setTimeout(function(){
console.log(i);
}, 0);
}


この方法を初めて使用する学生は、プログラムが 0...9 を出力すると思うかもしれませんが、実際には 10 が 10 個出力されます。
問題は、ループが完了すると関数が実行され、i が 10 になったことです。これは console.log(i) で使用されている 10 です。
目的が 0...9 を出力することである場合は、方法を変更し、関数パラメータを使用して 0...9 を保存できます (実際には、クロージャも使用されます):




コードをコピーします

コードは次のとおりです: for(var i = 0; i setTimeout((関数(i){
return function(){
console.log(i);
}
})(i), 0);
}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。