Condicionais else if: mais opções para suas decisões

Aprenda a encadear várias condições para cobrir diferentes cenários.

Na lição anterior, aprendemos a tomar decisões simples com if (se) e else (senão). Mas e se você tiver mais de duas opções? Por exemplo, se o tempo estiver ensolarado, vá à praia; se estiver nublado, vá ao parque; caso contrário (se estiver chovendo), fique em casa.

Para situações com múltiplas condições e escolhas, usamos a estrutura else if. Ela nos permite encadear várias verificações, uma após a outra.

A estrutura else if (Senão, se...)

O else if é usado entre o if inicial e o else final (que é opcional). Ele permite que você teste uma nova condição somente se a condição anterior (do if ou de um else if anterior) for falsa.

Sintaxe:

if (condição1) {
    // Código a ser executado SE a condição1 for verdadeira
} else if (condição2) {
    // Código a ser executado SE a condição1 for falsa E a condição2 for verdadeira
} else if (condição3) {
    // Código a ser executado SE a condição1 for falsa E a condição2 for falsa E a condição3 for verdadeira
} else {
    // Código a ser executado SE TODAS as condições anteriores forem falsas
}
  • Você pode ter quantos blocos else if precisar.
  • O JavaScript verifica as condições em ordem, de cima para baixo.
  • Assim que uma condição é true, o bloco de código correspondente é executado, e todas as outras condições (e o else final) são ignoradas. O programa continua a execução após todo o bloco if/else if/else.
  • O bloco else no final é opcional. Se ele não existir e nenhuma das condições if ou else if for verdadeira, nenhum código dentro da estrutura condicional será executado.

Exemplo: Classificando a temperatura

let temperatura = 15;

if (temperatura > 25) {
    console.log("Está fazendo calor!");
} else if (temperatura >= 18) { // Só verifica aqui se temperatura NÃO for > 25
    console.log("Está agradável.");
} else if (temperatura >= 10) { // Só verifica aqui se temperatura NÃO for > 25 E NÃO for >= 18
    console.log("Está fresco.");
} else { // Só executa aqui se temperatura NÃO for > 25 E NÃO for >= 18 E NÃO for >= 10
    console.log("Está frio!");
}

console.log("Verificação de temperatura concluída.");

// Para temperatura = 15:
// 1. temperatura > 25 (15 > 25) -> false
// 2. temperatura >= 18 (15 >= 18) -> false
// 3. temperatura >= 10 (15 >= 10) -> true
//    Executa: console.log("Está fresco.");
//    Ignora o 'else' final.
// Saída:
// Está fresco.
// Verificação de temperatura concluída.

Como o JavaScript "pensa" com if, else if e else:

  1. Ele avalia a condição1 do if.
  2. Se condição1 for true, executa o bloco do if e pula para o final de toda a estrutura.
  3. Se condição1 for false, ele avalia a condição2 do primeiro else if.
  4. Se condição2 for true, executa o bloco do else if e pula para o final de toda a estrutura.
  5. Ele continua esse processo para cada else if na sequência.
  6. Se todas as condições (if e else if) forem false, e houver um else final, ele executa o bloco do else.
  7. Se não houver else final e nenhuma condição for true, nenhum bloco de código dentro da estrutura condicional será executado.

Ordem das condições importa!

A ordem em que você escreve suas condições else if é muito importante, pois o JavaScript para na primeira condição que for verdadeira.

Exemplo de ordem incorreta (problema):

let pontuacao = 95;

if (pontuacao >= 60) {
    console.log("Aprovado!");
} else if (pontuacao >= 90) { // Esta condição NUNCA será alcançada se pontuacao for >= 90
    console.log("Aprovado com distinção!");
} else {
    console.log("Reprovado.");
}

// Para pontuacao = 95:
// 1. pontuacao >= 60 (95 >= 60) -> true
//    Executa: console.log("Aprovado!");
//    Ignora o resto, incluindo o 'else if (pontuacao >= 90)'.
// Saída: Aprovado! (Incorreto, deveria ser "Aprovado com distinção!")

Exemplo de ordem correta:

let pontuacao = 95;

if (pontuacao >= 90) { // Começa pela condição mais específica/restritiva
    console.log("Aprovado com distinção!");
} else if (pontuacao >= 60) { // Só verifica aqui se pontuacao NÃO for >= 90
    console.log("Aprovado!");
} else {
    console.log("Reprovado.");
}

// Para pontuacao = 95:
// 1. pontuacao >= 90 (95 >= 90) -> true
//    Executa: console.log("Aprovado com distinção!");
//    Ignora o resto.
// Saída: Aprovado com distinção! (Correto!)

Sempre organize suas condições do else if da mais específica para a mais geral, ou de forma que a lógica faça sentido e não "esconda" outras condições.

Com if, else if e else, você tem uma ferramenta poderosa para criar programas que reagem de forma inteligente a uma variedade de cenários, tornando seu código muito mais dinâmico e útil.