[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/if...else [Back]  [Original]

if...else - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

if...else

Baseline Widely available

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.

In this article

Prubalo

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

js
if (condicin)
  sentencia1

// Con una clausula else
if (condicin)
  sentencia1
else
  sentencia2
condicin

Una expresin que puede ser evaluada como verdadera o falsa.

sentencia1

Sentencia 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.

sentencia2

Sentencia 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.

Descripcin

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.

js
if (condicin) {
  sentencia1;
} else {
  sentencia2;
}

No usar blocks puede ocacionar un comportamiento inesperado, especialmente si el cdigo es estructurado manualmente. Por ejemplo:

js
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:

js
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.

js
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:

js
const b = new Boolean(false);
// Esta condicin se evala 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:

js
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:

js
if (x > 50) {
  /* hace algo */
} else if (x > 5) {
  /* hace algo */
} else {
  /* hace algo */
}

Asignacin en una expresin condicional

Casi nunca deberas tener un if...else con una asignacion x = y como condicin:

js
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:

js
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.

Especificaciones

Specification
ECMAScript 2027 LanguageSpecification
# sec-if-statement

Compatibilidad con navegadores

Vase Tambin


Web Proxy Viewer  |  New URL  |  Original Page