Olá, Kauê. Como vai?
Excelente implementação! O seu código demonstra perfeitamente o conceito de Callback, que é quando passamos uma função como argumento para outra função para que ela seja executada em um momento posterior.
Você estruturou muito bem a lógica utilizando o switch para tratar cada tipo de cliente de forma isolada, deixando o código limpo e de fácil leitura.
Como boa prática e para complementar o seu aprendizado sobre funções no JavaScript, vale destacar uma pequena melhoria de arquitetura. Atualmente, a sua função principal processarPedido depende do nome exato da função de callback externa (mensagemPersonalizada) no momento em que recebe os parâmetros:
function processarPedido(nome, tipo, mensagemPersonalizada) {
console.log(`processando pedido de ${nome}...`)
mensagemPersonalizada(nome, tipo); // Aqui você usou o nome fixo
}
O ideal ao trabalhar com callbacks é utilizar o nome do próprio parâmetro que você definiu na assinatura da função. Desse modo, o seu código ganha muito mais flexibilidade, permitindo que você passe qualquer outra função de mensagem no futuro sem precisar alterar a estrutura interna de processarPedido.
Veja o ajuste aplicando essa flexibilidade e uma correção na indentação do default:
function processarPedido(nome, tipo, callback) {
console.log(`processando pedido de ${nome}...`);
// Chamamos a função usando o nome do parâmetro "callback"
callback(nome, tipo);
}
function exibirMensagemCliente(nome, tipo) {
switch (tipo) {
case 'vip':
console.log(`Obrigado pela preferência, ${nome}! Você ganhou frete grátis.`);
break;
case 'novo':
console.log(`Bem-vindo(a), ${nome}! Aproveite um cupom de boas-vindas.`);
break;
case 'comum':
console.log(`Obrigado pela sua compra, ${nome}!`);
break;
default:
console.log('Tipo inválido');
break;
}
}
// Executando com a nova nomenclatura
processarPedido('Kauê', 'vip', exibirMensagemCliente);
Dessa forma, se amanhã você criar uma função chamada enviarEmailDeCancelamento(nome, tipo), você poderá passá-la dentro de processarPedido normalmente, tornando seu código muito mais reutilizável. Parabéns pelo ótimo resultado no exercício!
Espero que possa ter lhe ajudado!