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

Eu tenho o seguinte código JavaScript:

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

Espero que ele deve imprimir esta saída:

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

Mas em vez disso, imprime a seguir:

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

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