このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
SyntaxError: function statement requires a name
JavaScript の例外 "function statement requires a name" は、名前が必要な関数文がコードの中にあった場合に発生します。
In this article
エラーメッセージ
SyntaxError: Function statements require a function name (V8-based)SyntaxError: function statement requires a name (Firefox)SyntaxError: Function statements must have a name. (Safari)
エラーの種類
SyntaxErrorエラーの原因
コードに名前が必要な関数文があります。関数がどのように定義されているか、関数の名前を指定する必要があるかどうか、または問題の関数が関数式、IIFE である必要があるかどうか、 コードがこのコンテキストに正しく置かれているかどうかを確認する必要があります。
例
>文と式
function 文 (またはfunction 宣言)では名前が必要であり、次のものは動作しません。
js
function () { return "Hello world";}// SyntaxError: function statement requires a name代わりに、function 式 (代入)を使用することができます。
js
const greet = function () { return "Hello world";};または、定義するとすぐに実行されるIIFE (即時実行関数式)を定義しようとしているのかもしれません。その場合は、もう少々括弧が必要です。
js
(function () { // …})();ラベル付けされた関数
ラベルは関数名とは全く異なる機能です。ラベルを関数名として使用することはできません。
js
function Greeter() { german: function () { return "Moin"; }}// SyntaxError: function statement requires a nameまた、ラベル付け関数宣言そのものは非推奨です。代わりに通常の関数宣言を使用してください。
js
function Greeter() { function german() { return "Moin"; }}オブジェクトのメソッド
オブジェクトのメソッドを作るならば、オブジェクトを作る必要があります。その場合、function キーワードの後に名前がない次の構文は有効です。
js
const greeter = { german: function () { return "Moin"; },};メソッド構文を使用することもできます。
js
const greeter = { german() { return "Moin"; },};コールバック構文
コールバックを使用するときの構文もチェックします。大括弧とカンマが混同しやすいです。
js
promise.then( function () { console.log("success"); }); function () { console.log("error");}// SyntaxError: function statement requires a name正しくは、次の通りです。
js
promise.then( function () { console.log("success"); }, function () { console.log("error"); },);