Why does this JavaScript code print "undefined" on the console?
14,244
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.
Author by
Anton Moiseev
Lead software developer at Farata Systems and SuranceBay.
Updated on June 12, 2022Comments
-
Anton Moiseev almost 2 years
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.
-
Admin almost 12 years...and so the
undefined
is the result of the REPL evaluation but since the asynchronous timer is running it will continue to callconsole.log
... -
Anton Moiseev almost 12 yearsYes, thank you, you are right. I was confused because it's not the case for all browsers.