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

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:

js
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.

js
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:

js
(function () {})();

Funçoes etiquetadas

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

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

Isso funciona ,veja o exemplo:

js
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.

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

Callback Sintaxe

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

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

O correto seria:

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

Veja também