Why does the setInterval callback execute only once?

computer_smile picture computer_smile · Apr 17, 2012 · Viewed 49.2k times · Source

I have this counter I made but I want it to run forever, it's really simple, what am I doing wrong here?

function timer() {
  console.log("timer!")
}

window.setInterval(timer(), 1000)

Answer

Koen Peters picture Koen Peters · Apr 17, 2012

You used a function call instead of a function reference as the first parameter of the setInterval. Do it like this:

function timer() {
  console.log("timer!");
}

window.setInterval(timer, 1000);

Or shorter (but when the function gets bigger also less readable):

window.setInterval( function() {
  console.log("timer!");
}, 1000)