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, yNaN, en un contexto booleano se convierten enfalse. 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
}