jquery/javascript の setInterval に関するいくつかの投稿をここや他の場所で確認しましたが、答えについて厄介なことは、ソリューションが機能する理由を学んでいないことです。
考えてください:
匿名関数を使用して、「バニー」を繰り返し出力するアラートを設定できます。
setInterval(function(){
alert("bunnies")
},3000);
しかし、非匿名関数を使用したい場合は、コーディングする必要があります
setInterval(ホップ、3000);
機能する場所:
function hop(){
alert("bunnies");
}
コーディングしようとすると:
setInterval(hop(),3000);
ホップは実行されますが、1 回だけです。これがなぜなのかわかりません。これについては、setInterval への参照を渡す必要があることを示唆するさまざまな SO を読みました。これは、最初の形式が setInterval(hop,3000); であることを意味しますか? 参照渡し。もしそうなら、これは説明できますか?
したがって、問題があります。その中で明らかに、パラメータを関数ホップに渡すことができることが望ましいでしょう.....
setInterval(hop("bunnies"),3000);
機能する場所:
function hop(msg){
alert(msg);
}
これにより、ホップが呼び出されて「バニー」が出力されますが、関数は一度だけ呼び出されます。
したがって、 setInterval によって制御される関数にパラメーターを渡す唯一の方法は、匿名関数内に組み込むことです。
setInterval(function(){
hop("bunnies")
},3000);
これはパラメーターを渡し、3 秒ごとにバニーを警告するホップの実行を繰り返します (バニーを警告することは非常に重要です)。
したがって、質問:
- これは、パラメーターを渡すことができる唯一の構文ですか?
- なぜ setInterval(hop("bunnies"),3000); うまくいかない。