Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Função anônima

Não entendi a parte da resposta do exercício onde se lê: "Digamos que o navegador guarda a função em algum lugar para mais tarde alguém chamá-la. Mas para que alguém a chame (chamar significa, executá-la) precisa saber seu nome" Nesse caso se uma função sempre tem que ter um nome onde entre as funções anônimas ?

1 resposta
solução

Aham Samuel, eu vou lhe explicar.

Se você recebe uma ligação e a pessoa não se identifica, podemos dizer que é uma ligação anônima, certo? Se você não sabe quem te ligou, como poderá "chamar" essa pessoa, ou seja, ligar para ela?

Quando declaramos funções em JavaScript, precisamos dar um nome para elas. Sem esse nome, não será possível nosso código chamá-la.

Vejamos um exemplo de código de função que possui um nome:

function grita() {
  alert('oi');
}

Como essa função tem um nome, podemos chamá-la assim:

grita();

Agora pega a mesma função e remove o nome dela. Se ela não tem nome é uma função... anônima:

// não funciona
function () {
  alert('oi');
}

Veja que declaramos uma função anônima, sem nome. O problema que uma declaração assim não funciona. O JavaScript é malandro, porque ele sabe que, sendo uma função anônima você não terá um nome para chamá-la.

Então, para que serve a função anônima? Vou dar um exemplo. Primeiro, vamos voltar com nossa função grita.

function grita() {
  alert('oi');
}

Se quisermos executar essa função quando clicamos em um botão? Precisamos associar a função ao onclick de um botão.

var botao = document.querySelector('button');
botao.onclick = grita;

Perfeito, se você clicar agora no botão, executará a função que foi atribuída ao onclick. Certo? Mas se você não quer que ninguém mais chame essa função? Que ela só seja chamada mesmo, quando alguém clicar no botão? Ninguém impede de outra pessoa abrir o console do seu navegador e escrever:

grita()

Isso vai executar a função. E agora? Podemos atribuir para onclick uma função anônima. Sendo anônima, ninguém conseguirá invocá-la, mas como ela é o valor de onclick, toda vez que alguém clicar no botão o navegador é esperto para chamar por debaixo dos panos onclick(). Veja que ela estará chamando a função anônima que foi depositada em onclick.

var botao = document.querySelector('button');
botao.onclick = function() {
    alert('grita');
};

Veja que aqui a função anônima foi interessante,porque serviu para passar um código para ser executado em botao.onclick e ninguém mais pode chamá-la, porque ela não tem um nome, é anônima.