Expressão de função (function expression)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

A palavra-chave function pode ser usada para definir uma função dentro de uma expressão.

Sintaxe

function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

Parâmetros

name

O nome da função. Pode ser omitido, neste caso a função será anônima. O nome só é local em relação ao corpo da função.

paramN

O nome de um argumento a ser passado para a função.

statements

As declarações que compreendem o corpo da função.

Descrição

Uma expressão de função (function expression) é muito similar e tem quase a mesma sintaxe de uma declaração de função (veja function statement para mais detalhes). A principal diferença entre uma expressão de função e a declaração de uma função é o nome da função (function name), o qual pode ser omitido em expressões de funções para criar funções anônimas. Veja ainda o capítulo sobre funções para maiores informações.

Exemplos

O exemplo a seguir define uma função sem nome e a atribui a x. A função retorna o quadrado de seu argumento:

js
var x = function (y) {
  return y * y;
};

Expressão de função nomeada

Se você quer se referir à função atual dentro do corpo da função, você terá que criar uma expressão de função nomeada. Este nome será local apenas para o corpo (escopo) da função. Isto ainda evita o uso da propriedade não-padronizada arguments.callee.

js
var math = {
  factorial: function factorial(n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
  },
};

Especificações

Specification
ECMAScript Language Specification
# sec-function-definitions

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também