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

Calculando desconto

calcularDesconto(100, 20);

function calcularDesconto(preco, porcentagemDesconto = 10) {
    const valorDesconto = preco * (porcentagemDesconto / 100);
    const precoFinal = preco - valorDesconto;
    console.log(`O preço final do produto é: R$${precoFinal.toFixed(2)}`);
}   
1 resposta

Olá, Alan. Como vai?

Mais uma excelente implementação utilizando os recursos fundamentais do JavaScript! Sua lógica para calcular o desconto está impecável e o uso de Template Literals (as crases com ${}) para concatenar os textos com as variáveis deixou a saída no console muito limpa, moderna e legível.

Gostaria de destacar dois pontos técnicos muito interessantes na estrutura do seu código que merecem ser parabenizados, além de uma dica sobre arquitetura de funções:

  • Parâmetro Padrão (porcentagemDesconto = 10): Essa foi uma ótima escolha de boa prática. Definir um valor padrão evita que a sua aplicação estoure um erro matemático de NaN (Not a Number) caso a função seja chamada passando apenas o preço do produto. Se o desconto não for enviado, o JavaScript assume os 10% automaticamente.
  • Hoisting de Funções: Note que você chamou a função calcularDesconto(100, 20); na primeira linha, antes mesmo de declará-la na linha de baixo. Isso funciona perfeitamente em JavaScript graças ao conceito de Hoisting (içamento), onde o interpretador da linguagem "puxa" as declarações de funções tradicionais para o topo do escopo antes de executar o script.

Como sugestão de evolução para os seus próximos projetos, uma boa prática de desenvolvimento de software é fazer com que a função seja focada em uma única responsabilidade. Atualmente, sua função calcula o valor e também exibe o resultado no console. No dia a dia do mercado, o ideal é que a função apenas calcule e retorne (return) o valor final, deixando que outra parte do sistema decida o que fazer com ele (exibir na tela, salvar no banco de dados, etc.).

Veja como poderíamos refatorar o código seguindo esse princípio:

function calcularDesconto(preco, porcentagemDesconto = 10) {
    const valorDesconto = preco * (porcentagemDesconto / 100);
    return preco - valorDesconto; // Apenas calcula e devolve o resultado
}

// O console.log fica do lado de fora, consumindo o retorno da função
const resultado = calcularDesconto(100, 20);
console.log(`O preço final do produto é: R$${resultado.toFixed(2)}`);

Dessa forma, seu código se torna muito mais reutilizável para cenários reais no desenvolvimento Front-end. Parabéns por concluir mais esse desafio com sucesso!

Espero que possa ter lhe ajudado!