JavaScript: Condicionais em JavaScript
Última atualização: 2026-10-13
Instruções condicionais dão ao seu programa o poder de tomar decisões — seguir caminhos diferentes baseados em situações diferentes. Sem elas, seu código rodaria de cima para baixo sem ramificação; com elas, seu programa pode pensar e escolher como um humano.
1. Instrução if
A condicional mais básica: se a condição for verdadeira, execute o código dentro das chaves.
<!DOCTYPE html>
<html lang="pt-br">
<head><meta charset="UTF-8"><title>Instrução if</title></head>
<body>
<div id="output"></div>
<script>
let idade = 20;
if (idade >= 18) {
document.getElementById('output').textContent = 'Você é maior de idade';
}
</script>
</body>
</html>
Você pode omitir as chaves quando há apenas uma instrução dentro, mas é fortemente desencorajado — as chaves tornam seu código mais claro e previnem bugs quando você adicionar mais instruções depois.
Uma escolha binária: se a condição for verdadeira, execute o bloco if; caso contrário, execute o bloco else.
<!DOCTYPE html>
<html lang="pt-br">
<head><meta charset="UTF-8"><title>if...else</title></head>
<body>
<div id="output"></div>
<script>
let nota = 45;
if (nota >= 60) {
document.getElementById('output').textContent = 'Aprovado!';
} else {
document.getElementById('output').textContent = 'Não aprovado, continue tentando';
}
</script>
</body>
</html>
3. if...else if...else
Múltiplas condições avaliadas de cima para baixo — a primeira que corresponder é executada, e o resto é ignorado:
<!DOCTYPE html>
<html lang="pt-br">
<head><meta charset="UTF-8"><title>if...else if</title></head>
<body>
<div id="output"></div>
<script>
let nota = 85;
if (nota >= 90) {
document.getElementById('output').textContent = 'Excelente';
} else if (nota >= 80) {
document.getElementById('output').textContent = 'Bom';
} else if (nota >= 60) {
document.getElementById('output').textContent = 'Aprovado';
} else {
document.getElementById('output').textContent = 'Reprovado';
}
</script>
</body>
</html>
▶ Exemplo: Calculadora de Notas
▶ Experimente4. Operador Ternário
O operador ternário é um atalho para if...else, ideal para escolhas binárias simples:
<script>
// Sintaxe: condição ? valor1 : valor2
let idade = 20;
let status = idade >= 18 ? 'Adulto' : 'Menor';
// Equivalente a:
let status2;
if (idade >= 18) {
status2 = 'Adulto';
} else {
status2 = 'Menor';
}
</script>
if...else — legibilidade importa mais que brevidade.
5. Instrução switch
Ao verificar uma variável contra múltiplos valores fixos, switch é mais limpo que if...else if:
<script>
let dia = 3;
switch (dia) {
case 1: console.log('Segunda'); break;
case 2: console.log('Terça'); break;
case 3: console.log('Quarta'); break;
// ...
default: console.log('Número inválido');
}
</script>
Dois pontos-chave:
- Nunca omita
break— sem ele, a execução "cai" para o próximo case defaulté o caso geral — executa quando nenhum case corresponde
▶ Exemplo: Armadilha de Fall-through do Switch
▶ Experimentebreak é o bug mais comum do switch. Mas às vezes o "fall-through" é útil — quando múltiplos valores devem executar a mesma lógica, omitir break intencionalmente permite que eles se fundam.
6. Valores falsy
Em verificações condicionais, os seguintes valores são tratados como false (chamados valores falsy):
| Valor falsy | Descrição |
|---|---|
false |
Booleano falso |
0 |
Zero |
"" ou '' |
String vazia |
null |
Null |
undefined |
Undefined |
NaN |
Not a Number |
Todos os outros valores são truthy, incluindo "0" (string zero), [] (array vazio), {} (objeto vazio) — estes podem parecer "vazios", mas avaliam para true em condições.
▶ Exemplo: Verificações de Valores Falsy
▶ Experimente|| para valores padrão, cuidado: 0 e "" são válidos mas são tratados como falsy. Use ?? (operador de coalescência nula) em vez disso — ele só aplica o padrão para null e undefined.
❓ Perguntas Frequentes
== e === em condicionais?== realiza coerção de tipo antes de comparar ("1" == 1 é true), enquanto === não ("1" === 1 é false). Sempre use === para evitar conversões implícitas inesperadas.switch pode comparar strings?switch funciona com strings, números e booleanos — usa igualdade estrita (===) para comparação.?? e ||?|| dispara em todos os valores falsy (0, "", null, undefined, NaN, false), enquanto ?? só dispara em null e undefined. Use ?? quando precisar preservar 0 e strings vazias.📖 Resumo
if...else if...elseavalia de cima para baixo, executando a primeira correspondência e ignorando o resto- Operador ternário é atalho para
if...else— bom para atribuições simples, não para lógica complexa switché mais limpo para corresponder valores fixos, mas não esqueçabreak- Seis valores falsy:
false,0,"",null,undefined,NaN "0",[],{}são truthy — não se engane pela aparência "vazia"- Cuidado com
||para padrões quando0e""são válidos — use??ou comparações explícitas
📝 Exercícios
- Escreva um programa que recebe um ano como entrada e determina se é bissexto (divisível por 4 mas não por 100, ou divisível por 400)
- Construa uma calculadora simples: receba dois números e um operador (+, -, *, /) como entrada, use
switchpara calcular o resultado e trate divisão por zero - Construa uma calculadora de IMC: receba altura (m) e peso (kg) como entrada, calcule o IMC e exiba a categoria (abaixo do peso/normal/sobrepeso/obeso)