--- title: 'SyntaxError: function statement requires a name' slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement tags: - Error - Errors - JavaScript - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement ---
JavaScript の例外 "function statement requires a name" は、名前が必要な関数文がコードの中にあった場合に発生します。
Syntax Error: Expected identifier (Edge) SyntaxError: function statement requires a name [Firefox] SyntaxError: Unexpected token ( [Chrome]
{{jsxref("SyntaxError")}}
コードに名前が必要な関数文があります。関数がどのように定義されているか、関数の名前を指定する必要があるかどうか、または問題の関数が関数式、IIFE である必要があるかどうか、 コードがこのコンテクストに正しく置かれているかどうかを確認する必要があります。
function 文 (または function 宣言) では名前が必要であり、次のものは動作しません。
function () {
return 'Hello world';
}
// SyntaxError: function statement requires a name
代わりに、function 式 (代入) を使用することができます。
var greet = function() {
return 'Hello world';
};
または、定義するとすぐに実行される IIFE (即時実行関数式) を定義しようとしているのかもしれません。その場合は、もう少々括弧が必要です。
(function () {
})();
関数 label を使用している場合、function キーワードの後に関数名を指定する必要があります。これは動作しません:
function Greeter() {
german: function () {
return "Moin";
}
}
// SyntaxError: function statement requires a name
たとえば、これは動作します。
function Greeter() {
german: function g() {
return "Moin";
}
}
オブジェクトのメソッドを作るならば、オブジェクトを作る必要があります。その場合、function キーワードの後に名前がない次の構文は有効です。
var greeter = {
german: function () {
return "Moin";
}
};
コールバックを使用するときの構文もチェックします。大括弧とカンマが混同しやすいです。
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");
}
);