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:
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();