Saltar al contenido
Contenido de Programación

Lección 1.13: Depurar

Un programa casi nunca funciona a la primera. Depurar es encontrar por qué, y tiene método.

La idea

Hay dos tipos de fallo:

  • Con error: el programa se para y la consola dice por qué, en rojo.
  • Sin error: el programa termina, pero el resultado está mal.

Para el primero, se lee el error. Para el segundo, se mira por dentro con console.log().

Leer un error

JavaScript
console.log(puntos);
Consola
Uncaught ReferenceError: puntos is not defined
    at <anonymous>:1:13

Tiene tres partes:

  1. El tipo: ReferenceError.
  2. El mensaje: puntos is not defined, «puntos no está definido».
  3. Dónde: 1:13, línea 1, carácter 13.

Los mensajes vienen en inglés aunque el navegador esté en español.

Los tres más comunes

ErrorQué diceCausa típica
SyntaxErrorEl código está mal escritoFalta un paréntesis, una llave o unas comillas
ReferenceErrorEse nombre no existeUna errata: nombre y Nombre son distintos
TypeErrorEse valor no admite esoUsar algo que vale undefined

Sin error, pero mal

Esta media debería dar 6.5:

JavaScript
const notas = [7, 4, 9, 6];
let suma = 0;

for (const nota of notas) {
  suma = nota;
}

console.log(suma / notas.length);
Consola
1.5

Un console.log() dentro del bucle enseña qué pasa en cada vuelta. Separa los valores con comas:

JavaScript
for (const nota of notas) {
  suma = nota;
  console.log("nota:", nota, "suma:", suma);
}
Consola
nota: 7 suma: 7
nota: 4 suma: 4
nota: 9 suma: 9
nota: 6 suma: 6

suma no acumula: cada vuelta la sustituye. Tiene que ser suma = suma + nota.

El método

  1. Lee el primer error, no el último.
  2. Ve a la línea que indica.
  3. Si no hay error, pon console.log() para ver los valores.
  4. Cambia una sola cosa y vuelve a probar.

Pruébalo

Ejercicio

Este programa tiene dos fallos. Pégalo en la consola y arréglalo error a error.

JavaScript
function saludar(nombre) {
  console.log("Hola, " + nombre;
}

Saludar("Ana");
Ver la solución
  1. SyntaxError: falta cerrar el paréntesis de console.log(. Queda console.log("Hola, " + nombre);.
  2. Al arreglarlo aparece el segundo, un ReferenceError: la función se llama saludar y se usa como Saludar. Mayúsculas y minúsculas cuentan.
JavaScript
function saludar(nombre) {
  console.log("Hola, " + nombre);
}

saludar("Ana");

El segundo fallo no se veía hasta arreglar el primero. Es normal: por eso se va de uno en uno.

En resumen

  • Un error dice qué pasó (tipo y mensaje) y dónde (línea).
  • Sin error, console.log() enseña los valores por dentro.
  • De uno en uno: el primer error, una sola corrección y probar otra vez.