ホームページ >ウェブフロントエンド >jsチュートリアル >jsタイマーsetTimeoutはローカル変数を呼び出すことができません。

jsタイマーsetTimeoutはローカル変数を呼び出すことができません。

WBOY
WBOYオリジナル
2016-05-16 17:11:561350ブラウズ

JavaScript でのタイマー setTimeout の使用法は、一般に次のとおりです。beginrotate を呼び出した後、次のコードに示すように、rotateloop を定期的に実行するプロセスに入ります。 🎜>

コードは次のとおりです: var angle = 0; functionrotateloop() { if (angle < 360) {
角度 ;
// 角度
//....
setTimeout("rotateloop()", 100);

function beginrotate() {
/ /何かをします
//....
setTimeout("rotateloop()", 100)

このコードには問題があります。つまり、グローバル変数 angle は明らかに良いプログラミング習慣ではありません。そのため、インライン関数を使用することを考え、コードを次のように変更しました:




コードをコピー


コードは次のとおりです。


function beginrotate() {
var angle = 0; >関数rotateloop() { if (角度角度 ; //角度//....
setTimeout("rotateloop) ()", 100);
}
}
//何かをする
//...
setTimeout("rotateloop()", 100);
}


このように変更されました。その後、JavaScript がエラーを報告し、setTimeout がローカルの組み込み関数rotateloop を見つけられなかったことがわかりました。この問題は、コードを少し変更することで解決できます。




コードをコピー


コードは次のとおりです。

function beginrotate() {
var angle = 0; 関数rotateloop () { if (角度 角度 // ...... setTimeout(rotateloop, 100);
}
}
//何かをします
//...
setTimeout(rotateloop, 100); 🎜>}


setTimeout だけ 最初のパラメータを文字列ではなく関数オブジェクトに変更するだけです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。