Erro de sintaxe: declaração de função requer um nome

Mensagem

Errodesintaxe: Identificador Esperado(Edge)
Errodesintaxe: declaração de função requer um nome [Firefox]
Errodesintaxe: Token inesperado ( [Chrome]

Tipo de erro

Errodesintaxe

O que estava errado?

Existe uma declaração no código que requer um nome. Você precisa checar como as funções são definidas e se você precisa providenciar um nome, 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 está colocado corretamente neste contexto.

Exemplos

Statements vs expressions

Uma  declaração de função (ou declaração de função) requer um nome, isso não vai funcionar:

function () {
  return 'Olha mundo';
}
// SyntaxError: function statement requires a name

Você pode usar uma expressão de função ao invés de uma atribuição.

var saudar = function() {
  return 'Ola mundo';
};

Ou, sua função pode ser pretendida a ser uma IIFE (Immediately Invoked Function Expression), qual é uma função que será em breve definida. Você vai precisar de um pouco mais de colchetes neste caso:

(function () {

})();

Funçoes etiquetadas

Se usar labels, precisará providenciar um nome de função depois da  palavra function . Isto não funciona:

function Saudacao() {
  alemao: function () { 
    return "Moin";
  }
}
// SyntaxError: a função declaração requer um nome

Isso funciona ,veja o exemplo:

function Saudacao() { 
  alemao: function g() { 
    return "Moin"; 
  } 
}

Métodos de Objetos

Se pretende criar um metodo para um objeto, voce precisa-rá criar um objeto (hehehe). A seguir uma sintaxe sem nome depois de function é válida.

var saudacao = {
  alemao: function () {
    return "Moin";
  } 
};

Callback Sintaxe

Alem disso,cheque sua sintaxe usando callbacks. Colchetes e virgulas ficam facilmente atrapalhar e dificultar.

promessa.then(
  function() {
    console.log("sucesso"); 
  });
  function() {
    console.log("erro");
}
// SyntaxError: function statement requires a name

O correto seria:

promise.then(
  function() {
    console.log("success");
  },
  function() {
    console.log("error");
  }
);//sempre que abrir feche();

Veja também