9

次の例を検討してください。

<script type="text/javascript">
    function alertBox(){
        alert('Hello World!');
    }
    function doSomething(){
        setInterval(alertBox(), 5000); //This is for generic purposes only
    };
    function myFunction(){
        setTimeout(doSomething(),3000);
    };

    myFunction();
</script>

設定された 3 秒を待機するのではなくIMMEDIATELYを実行し、スケジュールされた 5 秒間隔ではなく、アラートONCEのみを実行する原因は何ですか?

ご協力いただきありがとうございます。

石工

4

3 に答える 3

19
alertBox()

これは即時の関数呼び出しのように見えませんか?

代わりに関数を (実行せずに) 渡してみてください:

setInterval(alertBox, 5000);
于 2012-08-07T00:00:52.173 に答える
11

関数オブジェクトを渡すのではなく、関数を実行しているためです。

function myFunction(){
    setTimeout(doSomething, 3000); // no () on the function
};
于 2012-08-07T00:00:43.317 に答える