Hamburger Icon
Dominando la cosola del navegador con JavaScript

Dominando la cosola del navegador con JavaScript

Los desarrolladores JavaScript usamos la consola a diario para debugar nuestro código. Vamos a ver unas cuantas funciones que suelen pasar desapercibidas.

Seguramente la función más famosa es console.log(), aunque seguro que ya has utilizado alguna vez otras como console.error(), console.warn() o console.debug(). Vamos a ver unas cuantas funcionalidades que seguro que pueden ser útiles en algunas ocasiones.

Dar estilo a los mensajes

Gracias a la directiva %c podemos usar estilos CSS para dar formato al mensaje que se grabará en la consola. ¿La utilidad? Pues no mucha, destacar algún mensaje concreto quizás, pero... ¿Y lo bonito que queda? Mira:

console.log(
  "%c¡Estás en el blog DevZeppelin!",
  "background: #00ADB5; padding: 20px; color: #222831; font-size: 25px"
)

https://a.storyblok.com/f/96536/497x95/8bad440fbf/consola-javascript-02.jpg

Agrupar mensajes

Podemos agrupar mensajes con las funciones console.group(), console.groupCollapsed() y console.groupEnd(). Los mensajes que dejemos en el log aparecerán en forma de menú desplegable. Lo haremos de esta forma:

// grupo de mensajes con menú desplegado por defecto
console.group("Grupo de mensajes 1")
console.log("Mensaje 1")
console.log("Mensaje 2")

console.group("Subgrupo de mensajes")
console.log("Subgrupo mensaje 1")
console.log("Subgrupo mensaje 2")
console.groupEnd()

console.log("Mensaje 3")
console.log("Mensaje 4")
console.groupEnd()

// grupo de mensajes con menú plegado por defecto
console.groupCollapsed("Mensajes para desplegar")
console.log("No me ves por defecto 1")
console.log("No me ves por defecto 2")
console.log("No me ves por defecto 3")
console.groupEnd()

El resultado en consola sería algo así:

https://a.storyblok.com/f/96536/511x246/4ef707a8d4/consola-javascript-01.jpg

¿Te imaginas haber sabido esto mientras estabas debugando varias funciones con diferentes bucles?

Validar algunos parámetros con Assertions

Con console.assert() puedes validar una expresión y mostrar un mensaje en la consola solo en caso de que falle la validación. Por ejemplo:

const ok = 5 < 10 // una validación que devuelve true
const ko = 5 > 10 // una validación que devuelve false

console.assert(ok, "Este mensaje no va a salir en la consola")
console.assert(ko, "La validación de 'ko' ha fallado, saldrá en la consola")

Mostrando datos en formato de tabla

Tenemos el método console.table() al cual le podemos pasar un objeto para ver sus propiedades en formato de tabla. Realmente es mucho más visual inspeccionar objetos de esta forma:

const objeto = {
  blog: "DevZeppelin Blog",
  creado: 2020,
  autor: "Pol",
  hechoConJS: true,
}

console.table(objeto)

El resultado sería este:

https://a.storyblok.com/f/96536/413x223/05de626605/consola-javascript-03.jpg

Consultar la Traza de la pila

¿Te va la programación funcional? ¿Te has perdido entre tanta función? Pues console.trace() te va a gustar. Si no sabes qué es la pila de JavaScript, puedes revisar mi artículo Destripando JavaScript - Parte 2 donde te lo explico.

Podemos ver una traza de la pila en un punto dado, muy útil para resolver bugs en unos minutos cuando de otro modo podría llevarnos horas.

const primeraFuncion = () => {
  segundaFuncion()
}

const segundaFuncion = () => {
  terceraFuncion()
}

const terceraFuncion = () => {
  console.trace()
}

primeraFuncion()

// la salida por consola nos mostraría esta información:

// terceraFuncion
// segundaFuncion
// primeraFuncion

Temporizadores

¿Estás optimizando un bucle y quieres ver el tiempo que tarda en ejecutarse? Puedes usar las funciones console.time() y console.timeEnd():

const bucleEjemplo = () => {
  console.time("bucleEjemplo")
  y = 0
  for (x = 0; x < 1000000; x += 1) {
    y += x
  }
  console.timeEnd("bucleEjemplo")
}

bucleEjemplo()

// bucleEjemplo: 18.9990234375 ms

¿Útil verdad? A veces tenemos la constumbre de usar solo el console.log(), pero la verdad es que tenemos a nuestra disposición muchas herramientas que nos hacen la vida más fácil, así que ¿por qué no usarlas?