roger-melo-treinamentos / curso-de-js-roger-melo

Repositório de informações do CJRM
491 stars 170 forks source link

Correção/comparação/explicação #4954

Closed Bruno-Luna closed 2 years ago

Bruno-Luna commented 2 years ago

Etapa da aula

3

Nome da aula

Correção dos exercícios da aula 02 da etapa 03 - Aula 01-01

Link da aula

https://app.nutror.com/v3/curso/a977a43d31cedcb6e7d064649ddd6c5436155aaf/aula/813573

Descreva a dúvida

09

const nome = nBruno => {
  console.log(nBruno());
}
nome(()=> `Bruno`)
const invokeCallback = callback => {
  callback()
}

const logName = () => {
  console.log("BLS");
}

invokeCallback(logName)

Prof Roger, minha dúvida é: Do jeito que fiz está de acordo com o que foi pedido ? Se não estiver gostaria de uma breve explicação comparando ambas resoluções, por gentileza. Grato

@Roger-Melo

MivlaM commented 2 years ago

Olá @Bruno-Luna!

Meu nome é Maykell, faço parte da equipe de suporte na Roger Melo Treinamentos e vou te ajudar com sua dúvida =)

Do jeito que fiz está de acordo com o que foi pedido?

O código que você fez está funcionando corretamente, mas apesar disso, há alguns detalhes nesse exercício que talvez você possa ter entendido de outra forma, veja abaixo:

A primeira parte do enunciado diz: Crie uma função que apenas invoca uma função de callback recebida por parâmetro;

const nome = nBruno => {
  console.log(nBruno());
}

No código que você fez, a sua função não está apenas invocando uma função de callback recebida por parâmetro, mas também está exibindo o resultado dessa invocação no console.log. Essa parte de exibir o nome no console.log deveria ser algo de uma outra função, no caso do exercício, seria papel da segunda função. Se você olhar a correção, nela há duas funções com os papéis bem definidos:

const invokeCallback = callback => {
  callback()
} // Função usada para invocar uma função de callback recebida por parâmetro

const logName = () => {
  console.log("BLS");
} // Função usada para exibir o nome no console

invokeCallback(logName) // Invocação da função que recebe um callback por parâmetro recebendo a função usada para exibir o nome como argumento.

Há também um outro detalhe na segunda parte do enunciado: Crie outra função que apenas exibe seu nome no console;

A função que você está usando para isso não exibe o nome no console, o retorno dela é o nome que vai ser exibido no console.log da primeira função. Portanto, o ideal seria que a segunda função pudesse exibir o nome no console.log ela mesma, sem precisar depender de outra função.

nome(()=> `Bruno`) // O nome não vai exibido no console sem essa função ser passada como parâmetro da invocação da primeira função.
const logName = () => {
  console.log("BLS");
} // Ao invocarmos a função de forma independente, o nome é exibido no console

Por fim, o seu código está funcionando; ele apenas desviou um pouco da proposta original do exercício, mas eu recomendo que vc dê preferência a forma que foi mostrada na resolução, por um motivo simples: a forma com que os desafios são resolvidos na correção contém princípios que serão intensificados nos desafios seguintes =)


Respondi a sua pergunta? Se restar qualquer dúvida é só avisar que te ajudarei =)

Bruno-Luna commented 2 years ago

Agradeço pela pontual explicação @MivlaM .

MivlaM commented 2 years ago

Vou fechar a issue, mas no que precisar, é só abrir uma nova =)