Baseline Widely available
La sentencia if...else
ejecuta una sentencia, si una condición especÃficada es evaluada como verdadera. Si la condición es evaluada como falsa, otra sentencia en la clausula opcional else
será ejecutada.
function testNum(a) {
let result;
if (a > 0) {
result = "positive";
} else {
result = "NOT positive";
}
return result;
}
console.log(testNum(-5));
// Expected output: "NOT positive"
Sintaxis
if (condición)
sentencia1
// Con una clausula else
if (condición)
sentencia1
else
sentencia2
condición
Una expresión que puede ser evaluada como verdadera o falsa.
sentencia1
Sentencia que se ejecutará si condición
es evaluada como verdadera. Puede ser cualquier sentencia, incluyendo otras sentenccias if
anidadas. Para ejecutar múltiples sentencias, use una sentencia block ({ ... }) para agruparlas. Para no ejecutar ninguna sentencia, usa una sentencia vacÃa.
sentencia2
Sentencia que se ejecutará si condición
se evalúa como falsa, y existe una cláusula else
. Puede ser cualquier sentencia, incluyendo sentencias block y otras sentencias if
anidadas.
Multiples sentencias if...else
pueden ser anidadas para crear una cláusula else if
. Note que no hay una palabra clave elseif
(en una sola palabra) en JavaScript.
if (condición1) sentencia1 else if (condición2) sentencia2 else if (condición3) sentencia3 //... else sentenciaN
Para entender como esto funciona, asà es como se verÃa si el anidamiento hubiera sido indentado correctamente:
if (condición1) sentencia1 else if (condición2) sentencia2 else if (condición3) ...
Para ejecutar varias sentencias en una cláusula, use una sentencia block ({/* ... */ }
) para agruparlas.
if (condición) {
sentencia1;
} else {
sentencia2;
}
No usar blocks puede ocacionar un comportamiento inesperado, especialmente si el código es estructurado manualmente. Por ejemplo:
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
Este código puede parece inocente â sin embargo, si ejecutamos checkValue(1, 3)
registrara el mensaje "a is not 1". Esto debido a que en el caso de dangling else, la clausula else
se conectará a la clausula if
más cercana. Por lo tanto, el código anterior, indentado apropiadamente, se verÃa asÃ:
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
Generalmente, es una buena práctica usar siempre sentencias block, especialmente en código que incluya sentencias if anidadas.
function checkValue(a, b) {
if (a === 1) {
if (b === 2) {
console.log("a is 1 and b is 2");
}
} else {
console.log("a is not 1");
}
}
No confundir los valores booleanos primitivos true
y false
con los valores verdadero y falso del objeto Boolean
. Cualquier valor diferente de undefined
, null
, 0
, -0
, NaN
, o la cadena vacÃa (""
), y cualquier objecto, incluso un objeto Boolean cuyo valor es false, se evalúa como verdadero en una sentencia condicional. Por ejemplo:
const b = new Boolean(false);
// Esta condición se evalúa como verdadera
if (b) {
console.log("b is truthy"); // "b is truthy"
}
Ejemplos Uso de if...else
Note que no hay sintaxis elseif
en JavaScript. Sin embargo, puede escribirse con un espacio entre else
y if
:
if (cipherChar === fromChar) {
result += toChar;
x++;
} else {
result += clearChar;
}
Using else if
Note que no hay sintaxis elseif
en JavaScript. Sin embargo, puede escribirse con un espacio entre else
y if
:
if (x > 50) {
/* hace algo */
} else if (x > 5) {
/* hace algo */
} else {
/* hace algo */
}
Asignación en una expresión condicional
Casi nunca deberÃas tener un if...else
con una asignacion x = y
como condición:
Porque a diferencia de los bucles while
, la condición es evaluada sólo una vez, asà que la asignación es ejecutada una vez. El código anterior es equivalente a:
El cual es mucho más claro. Sin embargo, en el raro caso que te encuentres en la situación de hacer algo como eso, la documentación del bucle while
tiene una sección llamada Usando una asignación como una condición con nuestras recomendaciones.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4