Esta tradução está incompleta. Por favor, ajude a traduzir este artigo do Inglês.

Mensagem

Syntax Error: Expected identifier (Edge)
SyntaxError: function statement requires a name [Firefox]
SyntaxError: Unexpected token ( [Chrome]

Tipo de erro

SyntaxError

O que correu mal?

Existe uma declaração de função no código que precisa de um nome. Você deve verficiar como as funções são definidas e se é necessário indicar um nome para a função

Existe uma declaração de função no código que requer um nome. Você precisará verificar como as funções são definidas e se você precisa fornecer um nome para a função, ou se a função em questão precisa ser uma expressão de função, um IIFE, ou se o código da função esta colocado corretamente neste contexto.

Exemplos

Declarações vs Expressões

Uma declaração de função precisa de um nome, o código seguinte não funciona:

function () {
  return 'Hello world';
}
// SyntaxError: function statement requires a name

É possível usar uma expressão de função (atribuição) como alternativa:

var greet = function() {
  return 'Hello world';
};

Ou, a sua função é talvez destinada a ser uma IIFE (Expressão de Função Invocada Imediatamente), que é uma função que é executada assim que é definida. Serão precisos mais alguns parêntises neste caso:

(function () {

})();

Funções com nome

Se você está a usar uma função com identificador, ainda precisará fornecer um nome de função após a palavra-chave da função. O código seguinte não funciona:

function Greeter() {
  german: function () { 
    return "Moin";
  }
}
// SyntaxError: function statement requires a name

O código seguinte irá funcionar por exemplo:

function Greeter() { 
  german: function g() { 
    return "Moin"; 
  } 
}

Métodos de objectos

Se você pretendia criar um método de um objeto, você precisará criar um objeto. A sintaxe a seguir sem um nome após a palavra-chave function é válida.

var greeter = {
  german: function () {
    return "Moin";
  } 
};

Sintaxe de Callback

Além disso, verifique a sintaxe ao usar callbacks. Parêntisis e virgurlas podem facilmente se tornar complicados.

promise.then(
  function() {
    console.log("success"); 
  });
  function() {
    console.log("error");
}
// SyntaxError: function statement requires a name

:

promise.then(
  function() {
    console.log("success");
  },
  function() {
    console.log("error");
  }
);

Veja também

Etiquetas do documento e contribuidores

Contribuidores para esta página: mdnwebdocs-bot, hudelgado
Última atualização por: mdnwebdocs-bot,