ホームページ > ウェブフロントエンド > jsチュートリアル > JS_javascriptスキルでsetIntervalとsetTimeoutがパラメータ付き関数を渡せない問題の解決方法

JS_javascriptスキルでsetIntervalとsetTimeoutがパラメータ付き関数を渡せない問題の解決方法

WBOY
リリース: 2016-05-16 17:35:03
オリジナル
1148 人が閲覧しました

JS では、setTimeout であっても setInterval であっても、関数名を呼び出しハンドルとして使用する場合はパラメーターを受け取ることができません。
これを解決する方法を見つける必要があります。
1. 文字列形式を使用します。 - (欠点) パラメータを定期的に変更することはできません
setInterval("foo(id)",1000);
2. 匿名関数のパッケージ化 (推奨)

window.setInterval(function()
{
foo (id);
}, 1000);


このようにして、関数 foo(id) が実行され、変数 id が渡されます。パラメータなしで返す 関数の関数



コードをコピー コードは次のとおりです。 function foo( id)
{
alert(id);
}
function _foo(id)
{
return function()
{
foo(id); 🎜>}
}
window.setInterval(_foo(id),1000);


ここでは、パラメータを受け取り、パラメータなしで関数を返す関数 _foo が定義されています。外部関数のパラメータは関数内で使用されるため、呼び出し時にパラメータを使用する必要はありません。
window.setInterval 関数で、_foo(id) を使用してパラメータなしの関数ハンドルを返すことで、パラメータを渡す関数を実現します。
4. setInterval を変更します




コードをコピーします alert(id);
}
var _sto = setInterval;
window.setInterval = function(callback,timeout,param)
{
var args = 配列 .prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args);
_sto(_cb) ,timeout) ;
}
window.setInterval(hello,3000,userName);


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