| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/if...else | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.
La sentencia if...else ejecuta una sentencia, si una condicin especficada es evaluada como verdadera. Si la condicin 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"
if (condicin)
sentencia1
// Con una clausula else
if (condicin)
sentencia1
else
sentencia2
condicinsentencia1Sentencia que se ejecutar si condicin es evaluada como verdadera. Puede ser cualquier sentencia, incluyendo otras sentenccias if anidadas. Para ejecutar mltiples sentencias, use una sentencia block ({ ... }) para agruparlas. Para no ejecutar ninguna sentencia, usa una sentencia vaca.
sentencia2Sentencia que se ejecutar si condicin se evala como falsa, y existe una clusula else. Puede ser cualquier sentencia, incluyendo sentencias block y otras sentencias if anidadas.
Multiples sentencias if...else pueden ser anidadas para crear una clusula else if. Note que no hay una palabra clave elseif (en una sola palabra) en JavaScript.
if (condicin1) sentencia1 else if (condicin2) sentencia2 else if (condicin3) sentencia3 //... else sentenciaN
Para entender como esto funciona, as es como se vera si el anidamiento hubiera sido indentado correctamente:
if (condicin1)
sentencia1
else
if (condicin2)
sentencia2
else
if (condicin3)
...
Para ejecutar varias sentencias en una clusula, use una sentencia block ({/* ... */ }) para agruparlas.
if (condicin) {
sentencia1;
} else {
sentencia2;
}
No usar blocks puede ocacionar un comportamiento inesperado, especialmente si el cdigo 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 cdigo 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 ms cercana. Por lo tanto, el cdigo anterior, indentado apropiadamente, se vera 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 prctica usar siempre sentencias block, especialmente en cdigo 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 vaca (""), y cualquier objecto, incluso un objeto Boolean cuyo valor es false, se evala como verdadero en una sentencia condicional. Por ejemplo:
const b = new Boolean(false);
// Esta condicin se evala como verdadera
if (b) {
console.log("b is truthy"); // "b is truthy"
}
if...elseNote 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;
}
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 */
}
Casi nunca deberas tener un if...else con una asignacion x = y como condicin:
if ((x = y)) {
//
}
Porque a diferencia de los bucles while, la condicin es evaluada slo una vez, as que la asignacin es ejecutada una vez. El cdigo anterior es equivalente a:
x = y;
if (x) {
//
}
El cual es mucho ms claro. Sin embargo, en el raro caso que te encuentres en la situacin de hacer algo como eso, la documentacin del bucle while tiene una seccin llamada Usando una asignacin como una condicin con nuestras recomendaciones.
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-if-statement |
This page was last modified on 29 may 2026 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |