Problema de la opcionalidad de las llaves en if-else
A pesar de que JavaScript permite las abreviaturas mostradas anteriormente con llaves, en general no recomiendo hacerlo, ya que es un foco de errores difíciles de detectar. Supongamos, por ejemplo, que existe el siguiente código:
let test = 3;
if (test > 0)
console.log(test);
Supongamos ahora que decidimos que si
la condición se cumple, mostrar también un segundo
mensaje con el texto '+++':
let test = 3;
if (test > 0)
console.log(test);
console.log('+++');
Sin embargo, sin llaves, dentro de la condición solo se encuentra el primer mensaje. Es decir, la primera línea se ejecutará si la condición es verdadera, y la segunda, siempre.
En realidad, nuestro código es equivalente a este:
let test = 3;
if (test > 0) {
console.log(test);
}
console.log('+++'); // esta línea quedó fuera de la condición
Y nosotros queríamos un código así:
let test = 3;
if (test > 0) {
console.log(test);
console.log('+++'); // esta línea está dentro de la condición
}
Precisamente por esto se recomienda siempre colocar las llaves, para no caer en este tipo de errores.