Search code examples
javascriptundefinedread-eval-print-loop

Why does this JavaScript code print "undefined" on the console?


I have the following JavaScript code:

var counter = 0;
function printCounter(){
   console.log("counter=" + ++counter);
   setTimeout(printCounter, 1000);
}
printCounter();

I expect that it should print this output:

counter=1
counter=2
counter=3
...

But instead it prints following:

counter=1
undefined  // <-- Notice this "undefined"
counter=2
counter=3
...

Why does it print "undefined" after the first iteration?

Important: I see such behavior only when the code executed in the JavaScript console. If it's the part of a page, it works fine.


Solution

  • It's because the "printCounter()" function itself returns undefined. That's the console telling you the result of the expression.

    Change "printCounter()" by adding return "Hello Anton!"; to the end :-)

    It's a little confusing to say it "returns undefined"; really, it has no explicit return, but it's the same effect.