Como o if / else decide?
Uma condição permite ao programa escolher o que fazer. Por exemplo: se a nota for pelo menos 7, aprova; se não, verifica se chegou a 5; caso contrário, reprova.
Decisão com if / else if / else
if (nota >= 7) {
resultado = "Aprovado";
} else if (nota >= 5) {
resultado = "Recuperação";
} else {
resultado = "Reprovado";
}
O JavaScript testa as condições de cima para baixo e executa o
primeiro bloco verdadeiro. Se nenhuma condição anterior for
verdadeira, executa o else.
Outro jeito: if dentro de if (aninhado)
Dá para chegar ao mesmo resultado colocando um if dentro
do else de outro. Repare que o teste é
media < 5 para reprovar, e "Recuperação" vira o último
else.
if (media >= 7) {
console.log("Aprovado!");
} else {
if (media < 5) {
console.log("Reprovado :(");
} else {
console.log("Recuperação. Estude mais para passar.");
}
}
O resultado é o mesmo do else if, mas o
else if costuma ser mais fácil de ler, porque evita
blocos dentro de blocos.
if / else x ternário
Quando só existem duas respostas, o ternário faz o
mesmo que o if / else, em uma linha.
// com if / else
let mensagem = "";
if (media >= 7) {
mensagem = "Aprovado";
} else {
mensagem = "Reprovado";
}
// com ternário
let mensagem = media >= 7 ? "Aprovado" : "Reprovado";
Leia assim: condição ? se verdadeira : se falsa. Com três
respostas (aprovado, recuperação, reprovado), prefira o
if / else if / else, que é mais fácil de ler.
Código desta seção: js/condicionais.js.
Exemplo: pode votar?
Primeiro calcula a idade; depois o if / else if escolhe
a faixa. O && (E) monta uma faixa: "de 16 até
antes de 18".
const anoVotacao = Number(prompt("Digite o ano da Eleição"));
const anoNascimento = Number(prompt("Digite o ano de nascimento"));
const idade = anoVotacao - anoNascimento;
if (idade < 16) {
console.log("Você não tem idade mínima para votar. Idade: " + idade + " anos");
} else if (idade >= 16 && idade < 18) {
console.log("Você pode ou não votar, é facultativo! Idade: " + idade + " anos");
} else if (idade >= 18 && idade < 70) {
console.log("Voto obrigatório. Idade: " + idade + " anos");
} else {
console.log("Facultativo de novo (70 anos ou mais). Idade: " + idade + " anos");
}
Dois jeitos de escrever "16 ou 17 anos" (os dois funcionam):
idade == 16 || idade == 17 // lista cada valor: é 16 OU é 17 idade >= 16 && idade < 18 // faixa: de 16 até antes de 18 (melhor para faixas grandes)
No código acima os valores vêm do prompt; no teste abaixo, dos campos.
As duas últimas faixas (18 a 69 e 70+) seguem a regra do voto no
Brasil. Código desta seção: js/condicionais.js, seção 4.