信息
SyntaxError: malformed formal parameter (Firefox)
错误类型
哪里错了?
在至少带有两个参数的 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; };
相关链接
Function()
- About functions
- Frankenstein by Mary Wollstonecraft Shelley, full e-text ("Cursed (although I curse myself) be the hands that formed you! You have made me wretched beyond expression. You have left me no power to consider whether I am just to you or not. Begone! Relieve me from the sight of your detested form.")