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

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

Mensagem

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.

Examples

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 'Hello world';
}
// SyntaxError: function statement requires a name

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

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

Or, you function is maybe intended to be an IIFE (Immediately Invoked Function Expression), which is a function that runs as soon as it is defined. You will need a few more braces in this case:

(function () {

})();

Labeled functions

If you are using function labels, you will still need to provide a function name after the function keyword. This doesn't work:

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

This would work, for example:

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

Object methods

If you intended to create a method of an object, you will need to create an object. The following syntax without a name after the function keyword is valid then.

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

Callback syntax

Also, check your syntax when using callbacks. Brackets and commas can get difficult easily.

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

Correct would be:

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

See also

Etiquetas do documento e colaboradores

Colaboradores desta página: re-andrade1987
Última atualização por: re-andrade1987,