Eu não entendi como chegou a essa conclusão. Alguém poderia me explicar melhor?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Eu não entendi como chegou a essa conclusão. Alguém poderia me explicar melhor?
Olá João! Tudo certo?
Sei bem que a lógica do código pode ser um pouco confusa no início, mas vamos tentar descomplicar isso juntos. A dúvida parece estar relacionada a como o código decide qual desconto aplicar com base na quantidade de milhas.
O bug no código original acontece porque ele não está aplicando corretamente as regras de desconto. Vamos analisar a solução correta, que é a opção D:
let porcentagemDesconto = 0;
if(quantidadeMilhas >= 30000){
porcentagemDesconto = porcentagemDesconto + 20;
} else {
if(quantidadeMilhas > 5000){
porcentagemDesconto = porcentagemDesconto + 10;
}
}
Aqui está o que acontece:
Primeiro if: verificamos se a quantidade de milhas é maior ou igual a 30.000. Se for, aplicamos um desconto de 20%. Isso já resolve o problema de clientes com mais de 30.000 milhas receberem o desconto correto.
Bloco else: se a quantidade de milhas não for maior ou igual a 30.000, verificamos se é maior que 5.000. Se for, aplicamos um desconto de 10%. Isso corrige o problema de clientes com milhas entre 5.001 e 29.999 não receberem desconto.
Por que else: usamos o else para garantir que, se uma condição for verdadeira (30.000 milhas ou mais), não precisamos verificar a condição seguinte (mais de 5.000 milhas), já que a primeira já foi satisfeita.
Espero que isso ajude a esclarecer como o código chega à conclusão correta sobre qual desconto aplicar.
Bons estudos!