Eu acabei esse curso agora e nunca me atrevi a explicar nenhum código pra ninguém kkkkk, mas incentivado pelo CEO da Alura e porque também demorei muito a entender esse exercício, vou fazer um esforço aqui Willian:
Do final para o começo, vamos analisar o código. Nosso programa está exibindo a variável "resultado":
mostra(resultado);
O que seria "resultado"?
var resultado = c("Flávio", "Almeida");
A variável "resultado" está executando a função "c" que recebe como parâmetros as palavras "Flávio e "Almeida".
Então vamos subir um pouco mais e verificar do que se trata a função "c":
ela recebe dois parâmetros conforme já vimos, que é o nome e o sobrenome, porém retorna "nome + espaço + a(sobrenome) de acordo com o código abaixo.
function c(nome, sobrenome) {
return b(nome + " " + a(sobrenome));
Até o momento teremos portanto "return b(Flávio + " " + a(Almeida). Seguindo vamos ver o que faz essa função "b":
function b(texto) {
return "@" + texto + "@";
}
Dessa forma teremos @+texto+@, sendo texto = Flávio + espaço + a(Almeida), ficando @Flávio a(Almeida)@.
Agora só nos resta executar a função "a":
function a(texto) {
return "(" + texto + ")";
}
Teremos então @Flávio (Almeida)@, pois substituiremos a palavra texto pela palavra Almeida, que é o parâmetro desejado. Apenas em torno do sobrenome, pois é onde a função "a" vai atuar.
Espero ter sido minimamente didático,
Abraço