Declaração e expressão de função em JavaScript: as diferenças

Declaração e expressão de função em JavaScript: as diferenças

Há duas formas de criar funções em JavaScript: a expressão de função e a declaração de função. A primeira pode ser guardada numa variável, a segunda pode ser reutilizada em qualquer ponto do código. Provavelmente estás habituado a ver declarações de função, era o que eu próprio conhecia melhor, , mas vale a pena saber que existe outro caminho.

Este artigo pode ser alvo de atualizações

Declaração de função

Ao contrário de uma expressão de função, uma função criada com uma declaração pode ser chamada mesmo antes de ter sido declarada: o interpretador procura as variáveis e as declarações de função antes de percorrer o resto do teu script. Uma vez declarada, podes chamá-la mais à frente no código, mas, para a poderes chamar, tens de lhe dar um nome.

javascript
function addition(a, b) {
    return a + b;
};
var calcul= addition(2, 5) ;

Expressão de função

A expressão de função é uma função criada, guardada e tratada como uma variável. Normalmente não tem nome, e é por isso que se fala em funções anónimas. A função fica guardada numa variável e chama-se como qualquer outra. Atenção, porém: só é processada quando o interpretador do browser lê a declaração. Ou seja, não podes chamá-la antes desse ponto, e todo o código que apareça até lá pode alterar o que acontece lá dentro.

javascript
var addition = function(a, b) {
    return a + b;
};
var calcul = addition(2, 5) ;

Immediately-Invoked Function Expression

Chamada correntemente IIFE, isola todas as variáveis declaradas dentro da função anónima das variáveis de outros scripts que possam ter o mesmo nome. Isso deve-se ao alcance das variáveis, o scope. Eis um exemplo de IIFE.

javascript
var addition = (function(){
  var a = 10;
    var b = 20;
    return a + b;
}());
  • Os parênteses que envolvem a função garantem que esta é tratada como uma expressão.
  • Os dois parênteses do fim, (), dizem ao interpretador para executar a função de imediato.

Usamo-la sobretudo assim que começamos a escrever um script novo, para isolar todo o nosso código.

Quando usar expressões de função anónimas?

Servem para código que só precisa de correr uma vez, em vez de ser chamado repetidamente por outras partes do script. Podes usar uma expressão de função anónima:

  • para evitar conflitos entre dois scripts que usem os mesmos nomes de variáveis que o nosso,
  • como argumento na chamada de uma função (para calcular o valor dessa função);
  • para executar uma tarefa quando ocorre um evento,
  • para atribuir o valor de uma propriedade a um objeto.

···

JavaScript

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.