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.