edubun
Español

Tomar decisiones con if y else

Una sentencia if ejecuta un bloque de código solo cuando su condición es true. Con else if, JavaScript revisa las condiciones desde arriba y se detiene en la primera que sea true.

Ejecutar código solo a veces

Todos los programas hasta ahora han ejecutado cada línea, todas las veces. Los programas útiles se comportan distinto según la situación: un juego muestra "You win" solo cuando la puntuación es lo bastante alta, y una tienda agrega un costo de envío solo cuando el pedido es pequeño. La sentencia if es la forma en que JavaScript elige.

const temperature = 31;
if (temperature >= 30) {   // si hace calor
  console.log("Hot day. Drink water.");
}
console.log("Done");

La condición va entre paréntesis después de la palabra if. Es cualquier expresión que produzca un booleano, normalmente una comparación de la unidad anterior. El código que se ejecuta cuando es true va entre llaves, que forman un bloque. Si la condición es false, JavaScript salta todo el bloque y sigue después de la llave de cierre. Arriba se imprimen las dos líneas. Cambia temperature a 20 y solo se imprime "Done". Las líneas de dentro del bloque llevan una sangría de dos espacios. JavaScript no necesita la sangría, pero muestra de un vistazo qué líneas pertenecen al if, y cualquier programador con experiencia la espera.

else: el otro camino

Muchas veces quieres una cosa cuando la condición es true y otra cuando es false. Agrega un bloque else. Se ejecuta exactamente uno de los dos bloques, nunca los dos y nunca ninguno.

const n = 7;
if (n % 2 === 0) {
  console.log(n + " is even");
} else {
  console.log(n + " is odd");
}
// imprime: 7 is odd

else if: más de dos opciones

Para varias posibilidades, encadena condiciones con else if. JavaScript las prueba desde arriba. En cuanto una es true, ejecuta ese bloque y salta todos los demás, aunque las condiciones siguientes también fueran true. El else final atrapa todo lo que no coincidió con nada de arriba.

const score = 72;
if (score >= 90) {
  console.log("A");
} else if (score >= 80) {
  console.log("B");
} else if (score >= 70) {
  console.log("C");
} else {
  console.log("F");
}
// imprime: C

El orden de las condiciones importa. Con una puntuación de 95, la primera prueba ya es true y se imprime A. Si las pruebas estuvieran escritas al revés, empezando por score >= 70, una puntuación de 95 se quedaría en la primera prueba e imprimiría C. Cuando los rangos se superponen así, pon primero la condición más estrecha. Seguir el código a mano es un buen hábito: elige un valor, lee desde arriba y di en voz alta por qué rama va.

Anidar y combinar

Un bloque puede contener otra sentencia if, lo que se llama anidar. A menudo puedes evitar anidar mucho combinando condiciones con && y || de la unidad anterior. Estos dos trozos de código hacen el mismo trabajo, y el segundo es más fácil de leer:

// anidado
if (age >= 8) {
  if (height >= 120) {
    console.log("You can ride");
  }
}

// combinado con &&
if (age >= 8 && height >= 120) {
  console.log("You can ride");
}

El operador condicional

Cuando solo necesitas elegir entre dos valores, hay una forma compacta llamada operador condicional (ternario): condition ? valueIfTrue : valueIfFalse. Por ejemplo, const label = n % 2 === 0 ? "even" : "odd";. Úsalo para elegir un valor de forma breve. Para cualquier cosa que ejecute varias sentencias, un if y un else normales son más claros.

Un descuido común es escribir un solo signo igual dentro de la condición: if (score = 100). Eso guarda 100 en score en lugar de comparar, y el bloque se ejecuta siempre. Compara siempre con ===.

if (condición) { ... } else if (otra condición) { ... } else { ... }

condiciónLa expresión booleana dentro de if ( )
bloqueSentencias agrupadas entre { }
elseSe ejecuta cuando la condición del if es false
else ifOtra condición, que solo se revisa si las de arriba fueron false
ramaUno de los caminos posibles a través de una sentencia if
anidarUn if dentro de otro if
ternariocond ? a : b elige uno de dos valores
sangríaEspacios al principio de las líneas dentro de un bloque
  1. ¿Qué imprime esto?
    const x = 5;
    if (x > 3) {
      console.log("big");
    } else {
      console.log("small");
    }
  2. ¿Qué imprime esto?
    const x = 2;
    if (x > 3) {
      console.log("big");
    }
    console.log("end");
    • big, then end
    • Only end
    • Nothing
  3. ¿Qué imprime esto?
    const t = 18;
    if (t >= 30) {
      console.log("hot");
    } else if (t >= 15) {
      console.log("mild");
    } else {
      console.log("cold");
    }
  4. ¿Qué imprime esto?
    const s = 95;
    if (s >= 70) {
      console.log("C");
    } else if (s >= 90) {
      console.log("A");
    }
  5. En una cadena if / else if / else, ¿cuántos bloques se ejecutan como máximo?
  6. ¿Qué imprime esto?
    const n = 10;
    console.log(n > 5 ? "yes" : "no");
  7. ¿Qué imprime esto?
    const a = 4;
    const b = 9;
    if (a > 5 || b > 5) {
      console.log("one");
    } else {
      console.log("none");
    }
  8. ¿Qué imprime esto?
    const a = 4;
    const b = 9;
    if (a > 5 && b > 5) {
      console.log("both");
    } else {
      console.log("not both");
    }
  9. ¿Qué está mal en if (score = 100)?
    • Nada
    • Guarda 100 en lugar de comparar; usa ===
    • Necesita un punto y coma dentro
  10. ¿Qué imprime esto?
    let msg = "start";
    const n = 0;
    if (n) {
      msg = "nonzero";
    }
    console.log(msg);
Ideas clave
  • if (condición) { ... } ejecuta el bloque solo cuando la condición es true.
  • else se ejecuta cuando es false; se ejecuta exactamente uno de los dos.
  • Las cadenas de else if se revisan desde arriba; gana la primera que sea true.
  • Pon primero la condición más estrecha cuando los rangos se superponen.
  • Compara con ===, nunca con un solo =.
Fuentes de este curso (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Fecha de consulta: 2026-10-17