Todo programa precisa reagir. Um usuário clica em um botão. Uma API retorna dados. Um campo de formulário fica em branco. Sem uma maneira de criar ramificações, seu código seria executado linha por linha, independentemente do que está acontecendo de fato. As condicionais dão ao JavaScript essa capacidade de escolha. Elas são as tomadoras de decisão dentro de suas funções, os guardiões que decidem o que é executado e o que é pulado. Assim que você entender como escrevê-las bem, deixará de escrever scripts rígidos e começará a construir softwares que realmente respondem.

Por que as Condicionais Importam

O fluxo de controle é a espinha dorsal da lógica. Você usa condicionais para validar senhas antes de enviá-las para um servidor. Você verifica se um carrinho de compras está vazio antes de calcular o imposto. Você detecta se uma requisição de rede falhou para poder exibir um erro em vez de uma tela em branco. Todos esses cenários dependem da mesma ideia simples: avaliar algo e, então, agir de acordo.

Sem condicionais, sua aplicação seria um monólogo em vez de uma conversa. Ela não conseguiria lidar com diferentes cenários de dados, gerenciar erros de forma elegante ou reagir às ações do usuário de qualquer maneira significativa. Elas permitem que você controle como seu programa funciona sob a incerteza do mundo real.

A Instrução if Básica

O lugar mais simples para começar é o if isolado. Ele diz: se isso for verdade, faça este trabalho. É só isso. Sem alternativa, sem um caminho secundário.

if (x % 2 === 0) {
    console.log("Even");
}

Neste trecho, o operador de módulo verifica se x é divisível por dois sem deixar resto. Quando o resto é zero, o console registra a string. Se x for ímpar, nada acontece. O bloco é ignorado e a execução continua abaixo.

Esse "ignorar silencioso" é importante. Às vezes, você só quer proteger uma única ação. Talvez você queira adicionar uma classe CSS a um botão apenas quando ele estiver ativo, ou adicionar um item a um array apenas quando a entrada não estiver vazia. Uma instrução if simples lida com esses momentos sem forçá-lo a escrever uma lógica que você não precisa.

Adicionando uma Alternativa com if-else

Decisões reais geralmente têm dois lados. Ou o usuário tem idade suficiente, ou não tem. Ou o pagamento foi bem-sucedido, ou falhou. A estrutura if-else cobre ambos.

if (age >= 18) {
    console.log("Adult");
} else {
    console.log("Not an Adult");
}

O bloco else captura tudo o que a primeira condição rejeitou. Ele cria uma ramificação binária limpa. Esse padrão funciona bem para alternâncias (toggles), permissões e feature flags. Mantenha a lógica dentro de cada bloco focada. Se você se pegar empilhando muitas tarefas em um único ramo, isso geralmente é um sinal para dividir o trabalho em funções menores.

Verificando Múltiplos Caminhos com else if

A vida raramente oferece apenas duas escolhas. Você pode precisar categorizar um número como positivo, negativo ou zero. Você pode atribuir uma taxa de envio com base em faixas de peso. Para comparações múltiplas e ordenadas, use else if.

if (x > 0) {
    console.log("Positive");
} else if (x < 0) {
    console.log("Negative");
} else {
    console.log("Zero");
}

O JavaScript avalia estes de cima para baixo. Assim que uma condição é atendida, ele executa aquele bloco e ignora o restante. A ordem importa. Se você verificasse x > 0 após verificar x > 100, a verificação mais rigorosa nunca seria executada porque a mais permissiva a capturaria primeiro. Pense no else if como uma lista de prioridades.

A Instrução switch

Quando você compara um valor com muitas opções discretas, uma longa cadeia de instruções else if pode parecer repetitiva. Uma instrução switch limpa isso. Ela compara uma expressão com cláusulas case e executa o bloco correspondente.

switch (true) {
    case marks >= 90:
        Branch = "Computer science";
        break;
    case marks >= 80:
        Branch = "Mechanical";
        break;
    default:
        Branch = "Other";
}

Este exemplo usa switch(true) para avaliar condições booleanas diretamente, o que é um padrão comum em JavaScript quando sua lógica depende de intervalos em vez de igualdade exata. A palavra-chave break é essencial. Sem ela, a execução "cai" para o próximo caso, independentemente de ele corresponder ou não, o que raramente é o que você deseja aqui. A cláusula default funciona como um else final, capturando qualquer coisa que não se encaixou nos casos anteriores.

O switch se destaca quando você tem opções claras e fixas. Muitas vezes é mais fácil de ler do que uma pilha alta de blocos else if, especialmente quando cada ramo apenas atribui um valor ou chama uma única função.

O Operador Ternário

Para decisões binárias curtas, o operador ternário mantém as coisas compactas. Ele recebe três operandos: uma condição, um valor se for verdadeiro e um valor se for falso.

const result = (age >= 18) ? "Eligible" : "Not eligible";

Você pode usá-lo para atribuições rápidas ou retornos inline. Ele funciona bem quando o resultado é uma expressão simples. Resista à tentação de aninhar ternários em três níveis de profundidade. Um ternário aninhado pode economizar linhas, mas custa a legibilidade. Quando sua lógica cresce, um bloco if-else costuma ser mais gentil com o próximo desenvolvedor que abrir o arquivo.

Decisões Aninhadas

Lógicas complexas às vezes exigem fazer perguntas de acompanhamento. Você pode aninhar um if dentro de outro if para refinar uma decisão.

if (weather === "sunny") {
    if (temp > 30) {
        console.log("