5 de julio de 2025

Ejecución condicional: if, '?'

A veces necesitamos que, bajo condiciones diferentes, se ejecuten acciones diferentes.

Para esto podemos usar la sentencia if y el “operador condicional” ?.

La sentencia “if”

La sentencia if(...) evalúa la condición en los paréntesis, y si el resultado es verdadero (true), ejecuta un bloque de código.

Por ejemplo:

let year = prompt('¿En que año fué publicada la especificación ECMAScript-2015?', '');

if (year == 2015) alert( '¡Estás en lo cierto!' );

Aquí la condición es una simple igualdad (year == 2015), pero podría ser mucho más compleja.

Si queremos ejecutar más de una sentencia, debemos encerrar nuestro bloque de código entre llaves:

if (year == 2015) {
  alert( "¡Es Correcto!" );
  alert( "¡Eres muy inteligente!" );
}

Recomendamos encerrar nuestro bloque de código entre llaves {} siempre que se utilice la sentencia if, incluso si solo se va a ejecutar una sola sentencia. Al hacerlo mejoramos la legibilidad.

Conversión Booleana

La sentencia if (…) evalúa la expresión dentro de sus paréntesis y convierte el resultado en booleano.

Recordemos las reglas de conversión del capítulo Conversiones de Tipos:

  • Los valores: número 0, string vacío "", null, undefined, y NaN, en un contexto booleano se convierten en false. Por ello, sin ser booleanos, se los conoce como valores “falsy”.
  • El resto de los valores se convierten en true, y son valores que llamamos “truthy”.

Entonces, el código bajo esta condición nunca se ejecutaría:

if (0) { // 0 es falsy
  ...
}

…y dentro de esta condición siempre se ejecutará:

if (1) { // 1 es truthy
  ...
}

También podemos pasar un valor booleano pre-evaluado al if, así:

let cond = (year == 2015); // la igualdad se evalúa y devuelve un true o false

if (cond) {
  ...
}

La cláusula “else”

La sentencia if puede contener un bloque else (“si no”, “en caso contrario”) opcional. Este bloque se ejecuta cuando la condición resulta falsa.

Por ejemplo:

let year = prompt('¿En qué año fue publicada la especificación ECMAScript-2015?', '');

if (year == 2015) {
  alert( '¡Lo adivinaste, correcto!' );
} else {
  alert( '¿Cómo puedes estar tan equivocado?' ); // cualquier valor excepto 2015
}

Muchas condiciones: “else if”