ホームページ >ウェブフロントエンド >jsチュートリアル >window.setTimeout()&window.setInterval()の使い方とパラメータの受け渡し方法を詳しく解説! _JavaScript スキル

window.setTimeout()&window.setInterval()の使い方とパラメータの受け渡し方法を詳しく解説! _JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 19:07:441117ブラウズ

JScript を使用する場合、Web ページの UI アニメーション効果などを生成するなど、定期的にメソッドを実行する必要がある場合があります。これは setInterval または setTimeout をよく使用するメソッドですが、これら 2 つのメソッドはスクリプト ホストによってシミュレートされたタイマー スレッドであるため、メソッドを呼び出すときにパラメータを渡すことができません。

一般的な使用シナリオは次のとおりです:

コードをコピー コードは次のとおりです:

window.setTimeout("delayRun()", n);
window.setInterval("intervalRun()", n); window.setInterval(intervalRun, n);


明らかに、呼び出しにパラメータを強制的に置き換えます: window.setTimeout("layRun(param)", n); 🎜>
コードをコピーします

コードは次のとおりです:window.setInterval("intervalRun(param)", window); setTimeout(layRun(param) , n); window.setInterval(intervalRun(param), n);
は、文字列リテラルの形式でメソッドを呼び出す場合、param であるため、すべて間違っています。グローバル変数 (つまり、ウィンドウ オブジェクト変数) である必要があり、関数ポインター形式での呼び出しは完全に間違っています。これは、関数の戻り値を setTimeout/setInterval 関数のパラメーターとして扱っています。これは、私たちが期待しているものではありません。全て。

この問題の解決策は、匿名関数のパッケージ化を使用することです。次のシナリオでは、これを実行します。



コードをコピー

コードは次のとおりです。 function foo() { var param = 100; window.setInterval(function()
{
> intervalRun(param);
}, 888);

function innerRun(times)
{
// todo: 時間パラメータに依存します
}

このようにして、delayRun/intervalRun 関数にパラメータを渡すためにグローバル変数に依存することはできなくなります。結局のところ、ページ内にグローバル変数が多すぎると、開発やデバッグに大きな混乱が生じることになります。そしてスクリプトの管理。

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