以下を使用して、JavaScriptを数秒間一時停止します。
setTimeout(start_countdown(),3000);
それは機能せず、関数は秒に関係なく呼び出されます。ただし、次の関数は機能しますが、関数を使用しません。
setTimeout(alert('hi'),3000);
どうすればこれを解決できますか?
以下を使用して、JavaScriptを数秒間一時停止します。
setTimeout(start_countdown(),3000);
それは機能せず、関数は秒に関係なく呼び出されます。ただし、次の関数は機能しますが、関数を使用しません。
setTimeout(alert('hi'),3000);
どうすればこれを解決できますか?
関数参照を渡す必要があります。関数の戻り値を渡しています。
違いは次のとおりです。1つは実行したい関数の青写真であり、もう1つは関数をすぐに実行し、その戻り値をに渡すことを意味しますsetTimeout
。
setTimeout(start_countdown, 3000);
単に名前付き関数を呼び出すよりも複雑なことをしたい場合、または名前付き関数にパラメーターを渡したい場合は、代わりに匿名関数をタイムアウトに渡して、その中で関数を呼び出す必要があります。
setTimeout(function() {
start_countdown(/* possible params */);
/* other code here as required */
}, 3000);
パラメータを渡す必要がない場合は使用しないでください()
setTimeout(start_countdown,3000);
関数をラップする必要がある場合
setTimeout(function(){start_countdown(parameter)},3000);
代わりに書く
setTimeout(start_countdown, 3000);
両親がいなければ()
、2番目の例は次のように書くこともできます
setTimeout(function() { alert('hi'); }, 3000);
異なるブラウザでは、異なる方法で動作します。IEでは、匿名関数を使用してパラメーターをコールバックに渡す必要があります。
setTimeout(function(){alert('hi')}、3000);