JavaScript でのタイマー setTimeout の使用法は、一般に次のとおりです。beginrotate を呼び出した後、次のコードに示すように、定期的に回転ループを実行するプロセスに入ります。
次のようにコードをコピーします。
変数角度 = 0;
関数rotateloop() {
if (角度 < 360) {
角度++;
//角度を使用する
//……
setTimeout("rotateloop()", 100);
}
}
関数 beginrotate() {
//何かをする
//……
setTimeout("rotateloop()", 100);
}
このコードの問題の 1 つは、グローバル変数 angle を生成することです。これは明らかに良いプログラミング手法ではありません。そのため、インライン関数を使用することを考え、コードを次のように変更しました。
次のようにコードをコピーします。
関数 beginrotate() {
変数角度 = 0;
関数rotateloop() {
if (角度 < 360) {
角度++;
//角度を使用する
//……
setTimeout("rotateloop()", 100);
}
}
//何かをする
//……
setTimeout("rotateloop()", 100);
}
この変更を加えた後、JavaScript がエラーを報告し、setTimeout がrotateloop のローカル埋め込み関数を見つけられなかったことがわかりました。この問題は次のような変更で解決できます。
次のようにコードをコピーします。
関数 beginrotate() {
変数角度 = 0;
関数rotateloop() {
if (角度 < 360) {
角度++;
//角度を使用する
//……
setTimeout(rotateloop, 100);
}
}
//何かをする
//……
setTimeout(rotateloop, 100);
}
setTimeout の最初のパラメータを文字列ではなく関数オブジェクトに変更するだけです。