Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por baixo dos panos

Como JS é uma linguagem fracamente tipada, acaba q é abstraído muita coisa, mas se essa ideia de passar uma função como argumentos ou retornar uma função em uma linguagem fortemente tipada como C/C++ eu poderia dizer que na verdade a função está recebendo ou retornando um ponteiro com o endereço de uma função?

1 resposta
solução!

Olá, Rafael! Tudo bem?

Desculpa a demora!

Sim, você pode interpretar dessa forma. No JavaScript, você verá o termo "referência" sendo usado nessas situações. Basicamente o valor que a variável guarda não é o objeto em si (ou nesse caso a função), mas a referencia para o objeto.

Esse comportamento aparece em todos os tipos de dados não-primitivos do JS (como objetos, arrays, funções...).

Para facilitar a comunicação (e por convenção) muitos falam que esse comportamento é passar por referência (pass by reference), o que seria o contrário do comportamento dos tipos primitivos, que é passar por valor (pass by value). Esses dois comportamentos estão diretamente ligados a linguagens como C#. Aqui, apesar de nós "emprestarmos" esses termos, o funcionamento não é exatamente o mesmo (pois, por exemplo, nós não conseguimos acessar o valor da referência, ou seja, o endereço de memória, e alterá-lo).

Resumidamente, sim, você está correto sobre o comportamento ser similar e pode usar essa semelhança para compreender melhor o JS. Apenas entenda que não é uma verdade absoluta, e algumas pessoas podem não gostar dessa comparação (como essa pessoa).

Bons estudos!