Mensagem
Syntax Error: Expected identifier (Edge) SyntaxError: function statement requires a name [Firefox] SyntaxError: Unexpected token ( [Chrome]
Tipo de erro
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");
}
);