¿Por qué este código de JavaScript se imprime "indefinido" en la consola?

Tengo el siguiente código de JavaScript:

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

Espero que debería imprimir esta salida:

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

Pero en cambio imprime lo siguiente:

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

¿Por qué se imprime "indefinido" después de la primera iteración? Importante: Veo tal comportamiento.solamente Cuando el código se ejecuta en la consola de JavaScript. Si es la parte de una página, funciona bien.

Respuestas a la pregunta(1)

Su respuesta a la pregunta