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

Minha solução sem a variável status está correta?

function avaliarDesempenho(pontuacaoFinal, callback) {
    console.log(`Pontuação: ${pontuacaoFinal}`);

    setTimeout(() => {
        callback(pontuacaoFinal);
    }, 2000);
}

function mensagemPersonalizada(pontuacao) {
    if (pontuacao >= 70) {
        console.log("Parabéns! Você foi aprovado!");
    } else if (pontuacao >= 50) {
        console.log("Você precisa de reforço");
    } else {
        console.log("infelizmente você está reprovado.");
    }
}

avaliarDesempenho(30, mensagemPersonalizada);
1 resposta

Oi, Yago! Tudo bem?

A sua dúvida faz sentido dentro da atividade Avaliando a pontuação de um usuário, porque você manteve a lógica de avaliação da pontuação usando uma callback para exibir a mensagem personalizada.

A sua solução funciona para o objetivo de mostrar a mensagem conforme a pontuação, mesmo sem criar a variável status. A diferença é que, no exemplo da atividade, a função avaliarDesempenho() fica responsável por classificar o resultado e a callback apenas exibe a mensagem; no seu código, essa classificação ficou dentro da função mensagemPersonalizada().

Isso não está errado, mas muda um pouco a divisão de responsabilidades. Uma dica é usar o setTimeout() apenas quando quiser simular uma espera ou comportamento assíncrono; se a ideia for só praticar funções callback, chamar callback(pontuacaoFinal) diretamente já resolve.

Você chegou a testar sua função com pontuações como 82, 60 e 30 para validar os três caminhos da condição?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!