¿Por qué se considera console.log() mejor que alert()?

Resuelto Daniel Szabo asked hace 13 años • 9 respuestas

Siempre me han dicho que al depurar una aplicación, console.log()se prefiere el método de JavaScript a simplemente usar un alert()método. ¿Por qué es esto? ¿Hay algún buen ejemplo que alguien pueda indicarme dónde console.log()está obviamente la mejor opción?

Daniel Szabo avatar Nov 21 '11 00:11 Daniel Szabo
Aceptado
  • alert()esta bloqueando
  • alert()no se puede suprimir fácilmente en un entorno sin depuración
  • consolenormalmente formatea bien sus objetos y permite atravesarlos
  • Las declaraciones de registro a menudo tienen un puntero interactivo al código que emitió la declaración de registro.
  • no puedes ver más de un alert()mensaje a la vez
  • consoleLos mensajes de correo electrónico pueden tener diferentes niveles de registro con un formato intuitivo.
Tomasz Nurkiewicz avatar Nov 20 '2011 17:11 Tomasz Nurkiewicz

Prueba esto:

var data = {a: 'foo', b: 'bar'};
console.log(data);
alert(data);

Verás que console.logte muestra el objeto, mientras alertte da [object Object], lo cual no es útil. Esto también es válido, por ejemplo, para los elementos:

alert(document.body); // [object HTMLBodyElement] (exact result depends on your browser)
lonesomeday avatar Nov 20 '2011 17:11 lonesomeday

Ambos son solo una forma de obtener información sobre lo que está sucediendo en ese momento en su JS. Solía ​​​​usar alert() todo el tiempo pero migré a console.log() por varias razones. (Nota al margen: la consola ofrece más que solo log(), eche un vistazo a qué más puede hacer).

Creo que los principales beneficios de console.log() son:

  • no detiene procesos como lo hace la alerta
  • puedes ver qué línea de qué script arrojó la entrada del registro sin poner la línea en tu mensaje
  • Si tienes más de una cosa que estás depurando, puede resultar muy molesto seguir presionando "Aceptar" en tus cuadros de alerta.
  • puedes registrar objetos y obtener mucha buena información (gracias por el recordatorio, otras respuestas)

Al final, todo se reduce a cómo prefieres depurar.

Una cosa a tener en cuenta. No todos los navegadores SOPORTAN console.log() y tendrán un problema si dejas tus llamadas a console.log() en tu código. Proporcione un código auxiliar de consola si la consola no está disponible para solucionar ese problema.

greenanvil avatar Nov 20 '2011 18:11 greenanvil

No bloquea y le permite examinar objetos en profundidad (en lugar de simplemente ver los resultados de toString()hacerlo).

Quentin avatar Nov 20 '2011 17:11 Quentin