Olá, GABRIEL. Como vai?
Muito legal ver você praticando o uso do console.log para rastrear o comportamento do seu código! Essa é uma das principais técnicas que nós, desenvolvedores, usamos no dia a dia para debugar (encontrar falhas) e entender o fluxo dos nossos sistemas.
No entanto, ao analisar a estrutura das suas condições, há um detalhe muito importante na lógica do segundo bloco if / else que está gerando um comportamento inesperado (um bug mascarado).
Se você rodar o seu código com quantidadeMilhas = 10000, o primeiro bloco if vai registrar corretamente no console: 'desconto de 10% aplicado'. Porém, logo em seguida, o console também vai registrar 'desconto ZERADO' e resetar os seus pontos para 0.
Por que isso acontece?
Isso ocorre porque os seus dois blocos if estão completamente isolados um do outro.
Quando o JavaScript termina de testar o primeiro bloco, ele entra no segundo if (quantidadeMilhas >= 30000). Como 10000 não é maior ou igual a 30000, a condição falha e o programa executa imediatamente o bloco else associado a ele, limpando o desconto que você havia acabado de ganhar!
Como corrigir usando o else if
Para resolver esse problema, as suas condições precisam estar interligadas em um único fluxo. Assim, o JavaScript testa a primeira opção; se não for, ele testa a segunda; e se nenhuma for verdadeira, ele cai no else.
Veja como o seu código fica corrigido e muito mais seguro:
let quantidadeMilhas = 3000;
let porcentagemDesconto = 0;
if (quantidadeMilhas >= 5000 && quantidadeMilhas < 30000) {
porcentagemDesconto = 10;
console.log('Desconto de 10% aplicado. Desconto atual: ' + porcentagemDesconto + '%');
} else if (quantidadeMilhas >= 30000) {
porcentagemDesconto = 20;
console.log('Desconto de 20% aplicado. Desconto atual: ' + porcentagemDesconto + '%');
} else {
porcentagemDesconto = 0;
console.log('Desconto ZERADO. O cliente possui menos de 5000 milhas.');
}
O que mudou?
- Uso do
else if: Agora, o programa só vai testar se o cliente tem mais de 30.000 milhas se ele não se encaixar na primeira regra. - Fluxo do
else real: O bloco else agora só será executado se a quantidade de milhas for menor do que 5.000, garantindo que quem tem 10.000 milhas mantenha o seu desconto de 10% intacto. - Melhoria nos logs: Aproveitei para concatenar o valor da variável dentro do
console.log para tornar o rastreamento no terminal ainda mais informativo.
Continue usando bastante o console.log nos seus estudos, ele é o seu melhor amigo para entender o que acontece por debaixo dos panos do código!
Espero que possa ter lhe ajudado!