2016-07-08 10 views
-1

は、なぜ、このコードは、5秒のsetTimeout

setTimeout(function() { 
     alert('Displayed after 5 seconds!'); 
    }, 5000); 

はなく、この後に警告メッセージを表示していますか?

function print() { 
    alert('Displayed after 5 seconds!'); 
}; 
setTimeout(print(), 5000); 

何が欠けていますか? setTimeoutは(function呼び出しの結果として)function参照しませfunctionreturn値をとるので、

+1

戻り値ではなく、要素の参照を 'setTimeout()'に渡します。 'setTimeout(print、5000);' '() 'がないことに注意してください。 –

+0

明示的に述べた理由jQueryの質問タイトルでは、しかし、あなたは再びそれを言及しなかったか、または例のコードで使用するので、私はその言及を編集し、タグを削除しました。 – nnnnnn

答えて

1

。しかしprint関数を実行することを意味する "print()"を渡し、結果が返されます。そのため、関数はただちに呼び出され、後でタイマーに登録されません。

3

print()後に括弧を削除:-)このステートメントで

setTimeout(print, 5000); 
1
function print() { 
alert('Displayed after 5 seconds!'); 
}; 
setTimeout(print(), 5000); 

を教えてください、私たちは、印刷を呼び出します機能を定義しながら私たちは5000ミリ秒後に関数を呼び出すするつもりときにその代わりに、私たちは、合格する必要があります:あなたは(timercallbackに間接的に関数参照)でパラメータとして関数名を渡す必要が

setTimeout(print, 5000);