Condicionais: if, else e else if
Aula sobre estruturas condicionais em JavaScript: if, else e else if. Aborda sintaxe, operadores de comparação, encadeamento de condições e boas práticas para escrever código legível e eficiente.
Nesta aula, vamos explorar as estruturas condicionais fundamentais do JavaScript: if, else e else if. Elas permitem que seu programa tome decisões com base em condições lógicas, executando diferentes blocos de código conforme o resultado de uma expressão booleana. Dominar essas estruturas é essencial para controlar o fluxo de execução e criar lógicas mais complexas.
Condicionais são a base de qualquer programa interativo. Com elas, você pode validar dados, reagir a eventos, implementar regras de negócio e muito mais. Vamos ver desde a sintaxe básica até técnicas avançadas para manter seu código limpo e compreensível.
Sintaxe
O if é a estrutura condicional mais simples. Ele avalia uma expressão e, se for verdadeira, executa o bloco de código associado. A sintaxe básica é:
if (condição) {
// código executado se condição for verdadeira
}O else pode ser usado para executar um bloco alternativo quando a condição é falsa:
if (condição) {
// código se verdadeiro
} else {
// código se falso
}Já o else if permite testar múltiplas condições em sequência:
if (condição1) {
// código se condição1 verdadeira
} else if (condição2) {
// código se condição1 falsa e condição2 verdadeira
} else {
// código se todas as anteriores falsas
}Exemplo prático:
let idade = 18;
if (idade < 12) {
console.log("Criança");
} else if (idade < 18) {
console.log("Adolescente");
} else {
console.log("Adulto");
}
// Saída: AdultoComparações
As condições em if geralmente usam operadores de comparação. Os principais são:
==(igualdade abstrata, com conversão de tipo)===(igualdade estrita, sem conversão)!=(diferença abstrata)!==(diferença estrita)>,>=,<,<=
É recomendado usar === e !== para evitar comportamentos inesperados com conversão de tipos. Exemplo:
console.log(5 == "5"); // true (conversão)
console.log(5 === "5"); // false (tipos diferentes)Além disso, podemos combinar condições com operadores lógicos:
&&(E lógico): verdadeiro se ambos forem verdadeiros||(OU lógico): verdadeiro se pelo menos um for verdadeiro!(NÃO lógico): inverte o valor booleano
let idade = 25;
let temCarteira = true;
if (idade >= 18 && temCarteira) {
console.log("Pode dirigir");
} else {
console.log("Não pode dirigir");
}
// Saída: Pode dirigirEncadeamento
É possível aninhar estruturas condicionais umas dentro das outras, criando encadeamento. No entanto, é importante evitar profundidade excessiva para manter a legibilidade. Exemplo de encadeamento:
let numero = 10;
if (numero > 0) {
if (numero % 2 === 0) {
console.log("Número positivo e par");
} else {
console.log("Número positivo e ímpar");
}
} else {
console.log("Número não positivo");
}Muitas vezes, podemos reescrever encadeamentos com else if para torná-los mais planos. Outra alternativa é usar operadores lógicos para combinar condições:
if (numero > 0 && numero % 2 === 0) {
console.log("Número positivo e par");
} else if (numero > 0 && numero % 2 !== 0) {
console.log("Número positivo e ímpar");
} else {
console.log("Número não positivo");
}Boas práticas de legibilidade
Escrever condicionais legíveis é fundamental para manutenção do código. Algumas dicas:
- Use chaves sempre, mesmo para blocos de uma linha. Isso evita erros ao adicionar código posteriormente.
- Evite encadeamentos profundos (mais de 3 níveis). Considere extrair lógica para funções ou usar
switchquando houver muitas condições fixas. - Prefira condições positivas em vez de negações duplas. Exemplo: em vez de
if (!(x < 10)), useif (x >= 10). - Use nomes descritivos para variáveis e condições. Em vez de
if (a && b), prefiraif (usuarioAtivo && temPermissao). - Considere o operador ternário para atribuições simples:
let status = (idade >= 18) ? "adulto" : "menor";
Exemplo de código bem escrito:
function podeAcessar(idade, autorizado) {
if (idade < 18) {
return false;
}
if (!autorizado) {
return false;
}
return true;
}
// Uso:
if (podeAcessar(20, true)) {
console.log("Acesso permitido");
} else {
console.log("Acesso negado");
}Referências
- MDN: if...else
- MDN: Operadores de comparação
- MDN: Operadores lógicos
- JavaScript.info: Condicionais
- W3Schools: JavaScript If...Else
Exercícios
Escreva um programa que verifica se um número é par ou ímpar. Use
ifeelse.✓ Resposta:let numero = 7; if (numero % 2 === 0) { console.log("Par"); } else { console.log("Ímpar"); }Crie uma função que recebe uma nota de 0 a 10 e retorna o conceito: A (9-10), B (7-8), C (5-6), D (3-4), F (0-2). Use
else if.✓ Resposta:function conceito(nota) { if (nota >= 9) return "A"; else if (nota >= 7) return "B"; else if (nota >= 5) return "C"; else if (nota >= 3) return "D"; else return "F"; } console.log(conceito(8)); // BEscreva um programa que verifica se um ano é bissexto. Regras: divisível por 400, ou divisível por 4 e não por 100.
✓ Resposta:function bissexto(ano) { if (ano % 400 === 0) return true; if (ano % 4 === 0 && ano % 100 !== 0) return true; return false; } console.log(bissexto(2020)); // trueUse operadores lógicos para simplificar a condição:
if (x > 0 && y > 0) { console.log("Ambos positivos"); }escreva uma versão usandoifaninhado.✓ Resposta:if (x > 0) { if (y > 0) { console.log("Ambos positivos"); } }Refatore o código abaixo para usar
else ife melhorar legibilidade:let valor = 10; if (valor < 5) { console.log("pequeno"); } else { if (valor < 10) { console.log("médio"); } else { console.log("grande"); } }✓ Resposta:let valor = 10; if (valor < 5) { console.log("pequeno"); } else if (valor < 10) { console.log("médio"); } else { console.log("grande"); }