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 rodaA 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 oddelse 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: CA 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ção | A expressão boolean dentro de if ( ) |
| bloco | Instruções agrupadas entre { } |
| else | Roda quando a condição do if é false |
| else if | Outra condição, conferida só se as de cima foram false |
| ramo | Um dos caminhos possíveis numa instrução if |
| aninhamento | Um if dentro de outro if |
| ternário | cond ? a : b escolhe um de dois valores |
| recuo | Espaços no começo das linhas dentro de um bloco |
- O que isto mostra?
const x = 5; if (x > 3) { console.log("big"); } else { console.log("small"); } - O que isto mostra?
const x = 2; if (x > 3) { console.log("big"); } console.log("end");- big, then end
- Only end
- Nothing
- O que isto mostra?
const t = 18; if (t >= 30) { console.log("hot"); } else if (t >= 15) { console.log("mild"); } else { console.log("cold"); } - O que isto mostra?
const s = 95; if (s >= 70) { console.log("C"); } else if (s >= 90) { console.log("A"); } - Numa cadeia if / else if / else, quantos blocos rodam no máximo?
- O que isto mostra?
const n = 10; console.log(n > 5 ? "yes" : "no"); - O que isto mostra?
const a = 4; const b = 9; if (a > 5 || b > 5) { console.log("one"); } else { console.log("none"); } - O que isto mostra?
const a = 4; const b = 9; if (a > 5 && b > 5) { console.log("both"); } else { console.log("not both"); } - 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
- O que isto mostra?
let msg = "start"; const n = 0; if (n) { msg = "nonzero"; } console.log(msg);
- 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