JavaScript setTimeout() won't wait to Execute?

Consider the following example:

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


What is it that causes this to execute IMMEDIATELY, rather than waiting the 3 seconds set, as well as only executing the alert ONCE, rather than at the scheduled 5 second intervals?

Thanks for any help you can provide!



Doesn't this look like an immediate function call?

Try passing the function (without executing it) instead:

setInterval(alertBox, 5000);

its because you are executing the function, not passing a function object.

function myFunction(){
    setTimeout(doSomething, 3000); // no () on the function

Following codes executing differently,

setTimeout(console.log('Nuwan'),0)---(A); and 
setTimeout(function(){console.log('Nuwan'),0}) --- (B)

The reason is when (B) is executing, CallStack in javascript runtime push the setTimeout() to web API and WebAPI waits 0 seconds to push the callback function to the event queue and then EventLoop pushes the callback to the stack after the current stack is empty.

In Case (A), console.log() directly calling because it is in the WepAPI, no need to go for an event loop to execute.

More Ref: WebAPIs: Javascript Runtime and Event Loop: