Reputation: 1963
Here is the simple example of two similar use of setInterval function:
http://codepen.io/anon/pen/MwYOOJ
In the first example setInterval function does not work, in the second version where below syntax was used it's working fine.
/* This part does not work */
var i = 0;
function displayNumber() {
i++;
$('#result').html(i);
}
setInterval(displayNumber(), 500);
/* This part does work */
var j = 0;
function displayNumberOk() {
j++;
$('#result-ok').html(j);
}
setInterval(function() { displayNumberOk() }, 500);
In specification I can find:
setInterval(function,milliseconds,param1,param2,...)
Why can't I use function name directly?
Upvotes: 0
Views: 194
Reputation: 18584
In the first example, where you have
setInterval(displayNumber(), 500);
you are calling displayNumber
directly, instead of passing it as parameter.
In fact, using
setInterval(displayNumber, 500);
should be sufficient (notice the lack of ()
, so that it is not called but rather passed as parameter).
Upvotes: 6