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

Tengo el siguiente código JavaScript:

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

Espero que debería imprimir esta salida:

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

Pero en su lugar imprime lo siguiente:

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

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

    Es porque la función “printCounter ()” en sí misma undefined . Esa es la consola que te dice el resultado de la expresión.

    Cambie “printCounter ()” agregando el return "Hello Anton!"; hasta el final 🙂

    editar – es un poco confuso decir que “devuelve undefined “; Realmente, no tiene retorno explícito, pero es el mismo efecto.