edubun
Português

Tomando decisões com if e else

Uma instrução if executa um bloco de código só quando a condição é true. Com else if, o JavaScript confere as condições de cima para baixo e para na primeira que for true.

Executando código só às vezes

Até agora, todo programa executou cada linha, toda vez. Programas úteis se comportam de modos diferentes em situações diferentes: um jogo mostra "You win" só quando a pontuação é alta o bastante, e uma loja cobra frete só quando o pedido é pequeno. A instrução if é o jeito como o JavaScript escolhe.

const temperature = 31;
if (temperature >= 30) {
  console.log("Hot day. Drink water.");   // só se a condição for true
}
console.log("Done");                      // sempre roda

A condição vai entre parênteses depois da palavra if. Ela é qualquer expressão que produza um boolean, em geral uma comparação da unidade anterior. O código a executar quando ela é true vai entre chaves, que formam um bloco. Se a condição é false, o JavaScript pula o bloco inteiro e continua depois da chave de fechamento. Acima, as duas linhas aparecem. Mude temperature para 20 e só "Done" aparece. As linhas dentro do bloco têm recuo de dois espaços. O JavaScript não precisa do recuo, mas ele mostra num relance quais linhas pertencem ao if, e todo programador experiente vai esperar por ele.

else: o outro caminho

Muitas vezes você quer uma coisa quando a condição é true e outra quando é false. Acrescente um bloco else. Exatamente um dos dois blocos roda, nunca os dois e nunca nenhum.

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

else if: mais de duas escolhas

Para várias possibilidades, encadeie condições com else if. O JavaScript as testa de cima para baixo. Assim que uma é true, ele executa aquele bloco e pula todo o resto, mesmo que condições seguintes também fossem true. O else final pega tudo o que não combinou com nada acima.

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");
}
// mostra: C

A ordem das condições importa. Com nota 95, o primeiro teste já é true e A aparece. Se os testes estivessem na ordem contrária, começando por score >= 70, uma nota 95 pararia no primeiro teste e mostraria C. Quando as faixas se sobrepõem assim, ponha a condição mais estreita primeiro. Acompanhar o código à mão é um bom hábito: escolha um valor, leia de cima para baixo e diga em voz alta qual caminho ele segue.

Aninhando e combinando

Um bloco pode conter outra instrução if, o que se chama aninhamento. Muitas vezes dá para evitar aninhamentos profundos combinando condições com && e ||, da unidade anterior. Estes dois trechos de código fazem o mesmo trabalho, e o segundo é mais fácil de ler:

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

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

O operador condicional

Quando você só precisa escolher entre dois valores, existe uma forma compacta chamada operador condicional (ternário): condition ? valueIfTrue : valueIfFalse. Por exemplo, const label = n % 2 === 0 ? "even" : "odd";. Use-o para escolhas curtas de um valor. Para qualquer coisa que execute várias instruções, um if e else normais são mais claros.

Um deslize comum é escrever um só sinal de igual dentro da condição: if (score = 100). Isso guarda 100 em score em vez de comparar, e o bloco roda toda vez. Sempre compare com ===.

if (condição) { ... } else if (outra condição) { ... } else { ... }

condiçãoA expressão boolean dentro de if ( )
blocoInstruções agrupadas entre { }
elseRoda quando a condição do if é false
else ifOutra condição, conferida só se as de cima foram false
ramoUm dos caminhos possíveis numa instrução if
aninhamentoUm if dentro de outro if
ternáriocond ? a : b escolhe um de dois valores
recuoEspaços no começo das linhas dentro de um bloco
  1. O que isto mostra?
    const x = 5;
    if (x > 3) {
      console.log("big");
    } else {
      console.log("small");
    }
  2. O que isto mostra?
    const x = 2;
    if (x > 3) {
      console.log("big");
    }
    console.log("end");
    • big, then end
    • Only end
    • Nothing
  3. O que isto mostra?
    const t = 18;
    if (t >= 30) {
      console.log("hot");
    } else if (t >= 15) {
      console.log("mild");
    } else {
      console.log("cold");
    }
  4. O que isto mostra?
    const s = 95;
    if (s >= 70) {
      console.log("C");
    } else if (s >= 90) {
      console.log("A");
    }
  5. Numa cadeia if / else if / else, quantos blocos rodam no máximo?
  6. O que isto mostra?
    const n = 10;
    console.log(n > 5 ? "yes" : "no");
  7. O que isto mostra?
    const a = 4;
    const b = 9;
    if (a > 5 || b > 5) {
      console.log("one");
    } else {
      console.log("none");
    }
  8. O que isto mostra?
    const a = 4;
    const b = 9;
    if (a > 5 && b > 5) {
      console.log("both");
    } else {
      console.log("not both");
    }
  9. O que há de errado com if (score = 100)?
    • Nada
    • Guarda 100 em vez de comparar; use ===
    • Precisa de um ponto e vírgula dentro
  10. O que isto mostra?
    let msg = "start";
    const n = 0;
    if (n) {
      msg = "nonzero";
    }
    console.log(msg);
Pontos-chave
  • if (condição) { ... } executa o bloco só quando a condição é true.
  • else roda quando ela é false; exatamente um dos dois roda.
  • Cadeias else if são conferidas de cima para baixo; vence a primeira true.
  • Ponha a condição mais estreita primeiro quando as faixas se sobrepõem.
  • Compare com ===, nunca com um = só.
Fontes deste 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)

Data de verificação: 2026-10-17