Importante

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!

1
resposta

[Dúvida] Creio que encontrei outra solução para esta questão!

Eu estou testando meu conhecimento tentando fazer as questões antes de ver as alternativas e me deparei com esta tentiva minha que deu certo e fiquei bem empolgado!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Eu estou rodando e fazendo teste com o live server para ver os resultados de tantos testes!

Eu queria saber se existe algum erro nesse método que o tornaria inviável de uso.

1 resposta

Olá, Renan! Tudo joia?

É ótimo ver seu entusiasmo em testar soluções por conta própria! Vamos analisar o seu código:

let quantidadeMilhas = prompt('numero milhas');
let porcentagemDesconto = 0;

if(quantidadeMilhas >= 5000){
    porcentagemDesconto = 10;
}

if(quantidadeMilhas >= 30000){
    porcentagemDesconto = 20;
}

alert(porcentagemDesconto);

O que acontece aqui é que o segundo if sempre será avaliado, mesmo que o primeiro já tenha sido verdadeiro. Isso significa que, se a quantidadeMilhas for 30.000 ou mais, o desconto será sempre 20%, o que está correto. No entanto, se for entre 5.000 e 29.999, o desconto será 10%, também correto.

No entanto, para seguir a lógica de uma única avaliação por milhas, você pode usar else if, assim:

let quantidadeMilhas = prompt('numero milhas');
let porcentagemDesconto = 0;

if(quantidadeMilhas >= 30000){
    porcentagemDesconto = 20;
} else if(quantidadeMilhas >= 5000){
    porcentagemDesconto = 10;
}

alert(porcentagemDesconto);

Dessa forma, o código verifica primeiro se a quantidadeMilhas é maior ou igual a 30.000 e, se não for, verifica se é maior ou igual a 5.000. Isso garante que apenas um bloco de código será executado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.