ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript タイマーがパラメータを渡してメソッドを呼び出す
JavaScriptのタイマー呼び出しメソッドでパラメータを渡し、必要な友達はそれを参照できます。
window.setTimeout であっても window.setInterval であっても、関数名を呼び出しハンドルとして使用する場合、パラメーターを受け取ることはできません。多くの場合、パラメーターを受け取る必要があるため、それを解決する方法を見つける必要があります。
たとえば、関数 hello(_name) は、ユーザー名のウェルカム メッセージを表示するために使用されます:
次のようにコードをコピーします:
var userName="Tony"; //根据用户名显示欢迎信息 function hello(_name){ alert("hello,"+_name); }
現時点では、次のステートメントを使用して、 hello 関数を 3 秒間実行します:
window.setTimeout(hello(userName) ,3000);
これにより、hello 関数がすぐに実行され、戻り値が呼び出しハンドルとして setTimeout 関数に渡されます。その結果は、プログラムが必要とするものではありません。望ましい結果は、文字列形式を使用することで実現できます:
window.setTimeout( "hello(userName)",3000);
ここでの文字列は、userName が変数を表す JavaScript コードです。記述は直感的ではなく、場合によっては関数名を使用する必要があります。これを実現するためのちょっとしたトリックがあります。 パラメーターを使用して関数を呼び出す:
次のようにコードをコピーします:
<script language="JavaScript" type="text/javascript"> <!-- var userName="jack"; //根据用户名显示欢迎信息 function hello(_name){ alert("hello,"+_name); } //创建一个函数,用于返回一个无参数函数 function _hello(_name){ return function(){ hello(_name); } } window.setTimeout(_hello(userName),3000); //此处也可以写为window.setTimeout( function(){return hello(userName)}, 3000); //就不用再定义function _hello() //--> </script>
関数 _hello がここで定義されています。外部関数のパラメータはパラメータを受け取り、パラメータなしで関数を返すために使用されます。 window.setTimeout 関数を呼び出すときにパラメータを使用する必要はありません。パラメーターのない関数ハンドル。これにより、パラメーターを渡す機能が実現されます。
以上がJavascript タイマーがパラメータを渡してメソッドを呼び出すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。