SyntaxError: function statement requires a name
JavaScript の例外 "function statement requires a name" は、名前が必要な関数文がコードの中にあった場合に発生します。
エラーメッセージ
js
Syntax Error: Expected identifier (Edge)
SyntaxError: function statement requires a name [Firefox]
SyntaxError: Unexpected token ( [Chrome]
エラーの種類
何がうまくいかなかったのか?
例
文と式
function 文 (または function 宣言) では名前が必要であり、次のものは動作しません。
js
function () {
return 'Hello world';
}
// SyntaxError: function statement requires a name
代わりに、function 式 (代入) を使用することができます。
js
var greet = function () {
return "Hello world";
};
または、定義するとすぐに実行される IIFE (即時実行関数式) を定義しようとしているのかもしれません。その場合は、もう少々括弧が必要です。
js
(function () {})();
ラベル付けされた関数
関数 label を使用している場合、function
キーワードの後に関数名を指定する必要があります。これは動作しません:
js
function Greeter() {
german: function () {
return "Moin";
}
}
// SyntaxError: function statement requires a name
たとえば、これは動作します。
js
function Greeter() {
german: function g() {
return "Moin";
}
}
オブジェクトのメソッド
オブジェクトのメソッドを作るならば、オブジェクトを作る必要があります。その場合、function
キーワードの後に名前がない次の構文は有効です。
js
var greeter = {
german: function () {
return "Moin";
},
};
コールバック構文
コールバックを使用するときの構文もチェックします。大括弧とカンマが混同しやすいです。
js
promise.then(
function() {
console.log("success");
});
function() {
console.log("error");
}
// SyntaxError: function statement requires a name
正しくは、次の通りです。
json
promise.then(
function() {
console.log("success");
},
function() {
console.log("error");
}
);