Condicionais

Um programa que sempre faz a mesma coisa não é muito útil. Você quer uma página que mostra uma mensagem para um visitante logado e outra para um desconhecido, um formulário que aceita idade de 18 mas não de 12, um jogo que informa se você ganhou ou perdeu. Tudo isso precisa de uma forma de fazer uma pergunta e agir conforme a resposta. É para isso que servem condicionais: elas permitem que seu código escolha o que executar baseado em se algo é verdadeiro.
Você já tem as peças. Os operadores de comparação e lógicos produzem respostas verdadeiras ou falsas, e este capítulo é sobre agir conforme elas.
Executando código apenas quando uma condição é verdadeira
Um if statement executa um bloco de código apenas quando uma condição é verdadeira. Você escreve a palavra if, uma condição entre parênteses, e um bloco entre chaves. Se a condição for verdadeira, o bloco executa. Se não for, JavaScript pula o bloco e continua.
const age = 20;
if (age >= 18) {
console.log("Você pode entrar."); // Você pode entrar.
}A condição age >= 18 é verdadeira ou falsa. Aqui age é 20, então é verdadeira, e a mensagem é impressa. Mude age para 12 e a condição é falsa, então o bloco é pulado e nada é impresso.
Frequentemente você quer uma alternativa para quando a condição é falsa. É para isso que else serve:
const age = 12;
if (age >= 18) {
console.log("Você pode entrar.");
} else {
console.log("Volte quando ficar mais velho."); // Volte quando ficar mais velho.
}Exatamente um dos dois blocos executa, nunca ambos. Quando você tem mais de dois resultados, else if permite que você verifique outra condição:
const score = 74;
if (score >= 90) {
console.log("Nota: A");
} else if (score >= 70) {
console.log("Nota: B"); // Nota: B
} else {
console.log("Nota: C");
}JavaScript verifica cada condição de cima para baixo e para na primeira que é verdadeira. Uma pontuação de 74 não é >= 90, mas é >= 70, então imprime Nota: B e nunca olha para o else.
if executa seu bloco apenas quando a condição entre parênteses é verdadeira, e else oferece uma alternativa para quando não é. Adicione else if quando há mais de dois resultados. JavaScript verifica de cima para baixo e para na primeira correspondência, então coloque suas condições em uma ordem que faça sentido. Escolhendo um valor com o operador ternário
Às vezes um if / else faz um pequeno trabalho: escolher entre dois valores. Para isso há uma forma mais curta chamada operador ternário. Você escreve uma condição, um ?, o valor a usar quando é verdadeiro, um :, e o valor a usar quando é falso.
const age = 20;
const message = age >= 18 ? "Bem-vindo" : "Muito jovem";
console.log(message); // Bem-vindoLeia como uma pergunta: age >= 18? Se sim, message fica "Bem-vindo"; se não, fica "Muito jovem". É a mesma decisão que um if / else faria, em uma linha.
O ternário é melhor quando você está escolhendo um valor para guardar ou imprimir. Quando um ramo precisa fazer várias coisas, um if statement é mais claro, então use o ternário apenas quando cada lado é um único valor.
condition ? valueIfTrue : valueIfFalse. Brilha quando você está escolhendo algo para guardar ou imprimir. Se um ramo precisa fazer mais que devolver um único valor, use um if completo, lerá mais claramente. Comparando um valor contra casos fixos com switch
Quando você está verificando um valor contra uma lista de possibilidades definidas, um switch statement pode ser mais limpo que uma longa cadeia if / else if. Você o fornece o valor para verificar, depois lista os casos para compará-lo.
const day = "Ter";
switch (day) {
case "Sab":
console.log("Fim de semana");
break;
case "Dom":
console.log("Fim de semana");
break;
default:
console.log("Dia de semana"); // Dia de semana
}O switch compara day com cada case por sua vez. Quando encontra uma correspondência, executa o código daquele case. break diz para parar; sem ele, JavaScript continua executando o próximo case. default é a alternativa que executa quando nenhum case corresponde, como o else final em uma cadeia.
Esquecer break é o erro clássico do switch. Deixe de fora e seu código executa o case correspondente e então cada case abaixo dele até que encontre um break ou o fim, que é quase nunca o que você quer dizer.
switch verifica um valor contra uma lista de opções case e executa aquela que corresponde, com default como catch-all. Sempre termine cada case com break, ou JavaScript continua executando nos cases abaixo. Esse break faltante é o erro que quase todos cometem pelo menos uma vez. Escolhendo a ferramenta certa
Você agora tem três formas de tomar uma decisão, e a escolha é principalmente sobre adequação. Use uma cadeia if / else if / else para a maioria da ramificação, especialmente quando as condições são intervalos ou combinações. Use um ternário quando está escolhendo um de dois valores para guardar ou imprimir. Use um switch quando está verificando um valor contra um punhado de opções fixas.
Nenhuma delas é mais avançada que as outras. Use aquela que expõe sua decisão mais claramente, e se não tiver certeza, um if statement é sempre uma escolha segura.
if para a maioria das decisões, um ternário quando está escolhendo um de dois valores, e um switch quando está correspondendo um valor contra opções fixas. Nenhuma delas é mais sofisticada que as outras. Escolha aquela que expõe sua decisão mais claramente, e padrão para if quando não tiver certeza. Para onde condicionais vão a partir daqui
Condicionais são como um programa para de ser um script fixo e começa a responder à sua entrada. Você as usará constantemente, e elas se combinam com tudo ao seu redor: as respostas verdadeiras ou falsas vêm de operadores, e as decisões que você toma aqui começam a compensar uma vez que você pode executá-las repetidamente sobre dados com loops e empacotá-las em funções.
O próximo capítulo, loops, adiciona a outra metade do controle de fluxo: não apenas escolher se executar código, mas executá-lo repetidamente até uma condição dizer para parar.

