¿Por qué se considera console.log() mejor que alert()?
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?
alert()
esta bloqueandoalert()
no se puede suprimir fácilmente en un entorno sin depuraciónconsole
normalmente 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 console
Los mensajes de correo electrónico pueden tener diferentes niveles de registro con un formato intuitivo.
Prueba esto:
var data = {a: 'foo', b: 'bar'};
console.log(data);
alert(data);
Verás que console.log
te muestra el objeto, mientras alert
te 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)
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.
No bloquea y le permite examinar objetos en profundidad (en lugar de simplemente ver los resultados de toString()
hacerlo).