Por que esse código JavaScript imprime "indefinido" no console?

Eu tenho o seguinte código JavaScript:

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

Espero que ele deve imprimir esta saída:

<code>counter=1
counter=2
counter=3
...
</code>

Mas em vez disso, imprime a seguir:

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

Por que imprime "indefinido" após a primeira iteração? Importante: vejo esse comportamentosó quando o código é executado no console do JavaScript. Se é a parte de uma página, funciona bem.

questionAnswers(1)

yourAnswerToTheQuestion