JavaScript setTimeout()不会等待执行?

Mas*_*uer 8 javascript callback settimeout setinterval

请考虑以下示例:

<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>
Run Code Online (Sandbox Code Playgroud)

是什么导致它立即执行,而不是等待3秒设置,以及仅执行警报ONCE,而不是按预定的5秒间隔执行?

感谢您的任何帮助,您可以提供!

石匠

Ate*_*ral 17

alertBox()
Run Code Online (Sandbox Code Playgroud)

这看起来不像是一个即时函数调用吗?

尝试传递函数(不执行它):

setInterval(alertBox, 5000);
Run Code Online (Sandbox Code Playgroud)


hvg*_*des 11

因为你正在执行该函数,而不是传递一个函数对象.

function myFunction(){
    setTimeout(doSomething, 3000); // no () on the function
};
Run Code Online (Sandbox Code Playgroud)