SyntaxError: Malformed formal parameter

信息

SyntaxError: malformed formal parameter (Firefox)

错误类型

SyntaxError

哪里错了?

在至少带有两个参数的 Function() 构造器中它的最后一个参数是创建的新函数的源代码。剩下的都是新函数的参数。

构造器的参数有些情况下是无效的。 也许是你不小心用了一个关键字 if 或 var 作为参数名称,或者在参数列表中有一些杂乱的标点符号。 或者也许你不小心传递了一个无效的值,比如数字或对象。

好吧,这解决了我的问题。但是为什么不开始就说明白呢?

诚然,错误信息中的措辞稍微有些奇怪。"Formal parameter" 是 "function argument" 的另一种优美的同义。 我们使用 “malformed”(即畸形)这个词,因为所有的Firefox工程师都是19世纪哥特式恐怖小说的巨星。

示例

无效的

var f = Function("x y", "return x + y;");  
// SyntaxError (missing a comma)

var f = Function("x,", "return x;");  
// SyntaxError (extraneous comma)

var f = Function(37, "alert('OK')");
// SyntaxError (numbers can't be argument names)

有效的

var f = Function("x, y", "return x + y;");  // correctly punctuated

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

// if you can, avoid using Function - this is much faster
var f = function (x) { return x; };

相关链接