SyntaxError: Malformed formal parameter

この記事は編集レビューを必要としています。ぜひご協力ください

メッセージ

SyntaxError: malformed formal parameter (Firefox)

エラータイプ

SyntaxError

何がうまくいかなかったのか?

Function() を使用しいて、最低 2 つの引数を渡すとします。最後の引数は、生成する新しい関数のソースコードです。 残りの引数は、新しく生成する関数の引数リストを構成します。

引数リストの何らかが無効です。引数名として ifvar のようなキーワードを選んでしまったかもしれませんし、引数リストに誤った区切りがあるかもしれません。または、数値やオブジェクトのような無効な値を渡しているかもしれません。

問題は解決した。しかし、なぜ最初にそれを伝えないのか?

確かに、エラーメッセージの文言は少々奇妙です。"Formal parameter" は、"関数の引数"を表現するにはファンシーな言い方です。 さらに、"malformed" という言葉を使っていますが、それは Firefox エンジニアが 19 世紀のゴッシックホラー小説の大ファンだからです。

無効なケース

var f = Function("x y", "return x + y;");  
// SyntaxError (カンマが不足している)

var f = Function("x,", "return x;");  
// SyntaxError (余計なカンマがある)

var f = Function(37, "alert('OK')");
// SyntaxError (数字は引数名に使用できない)

有効なケース

var f = Function("x, y", "return x + y;");  // 正しく区切られている

var f = Function("x", "return x;");

// 可能であるなら、Function の使用を控える - こちらの方が高速です
var f = function (x) { return x; };

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,