Chrome-eval-function()

Chrome-eval-function(),function,google-chrome,eval,Function,Google Chrome,Eval,为什么要扔铬 SyntaxError: Unexpected token ( 当我试着打电话时: eval("function(){alert('test')}") ?Chrome正在抛出SyntaxError,因为您要么需要()围绕函数,要么需要命名它 //This defines a as the function eval("function a(){alert('foo')}"); //This returns the anonymous function eval("(funct

为什么要扔铬

SyntaxError: Unexpected token (
当我试着打电话时:

eval("function(){alert('test')}")

Chrome正在抛出SyntaxError,因为您要么需要()围绕函数,要么需要命名它

//This defines a as the function
eval("function a(){alert('foo')}");

//This returns the anonymous function
eval("(function(){alert('foo')})");

两者都可以正常工作。

奇怪的是,Safari 5.1和Chrome 13.0.782.220在这种匿名函数的特殊情况下确实需要外部参数。我不知道为什么,因为没有帕伦斯,这个表达并不比有帕伦斯更模糊,也不比有帕伦斯更有用。Firefox 6.0.2在没有parens的情况下非常开心


有人知道Javascript语言规范是否指定了这些外部参数,以及它们对于匿名函数以外的情况是否是必需的吗?

为什么要定义一个从未使用过的匿名函数?很好,谢谢(第二个选项是我一直在寻找的)-你知道这是否会被所有浏览器支持吗?“你需要()围绕你的函数,或者你需要给它命名”——但是为什么呢?landon9720——如果你不给函数命名,你就不能执行它,因为它将是一个匿名函数,你再也找不到了。把()围绕在它周围,或者更好的方法是()后跟()你就可以执行这个函数。Mimisbrunr:你可以通过
eval(“函数”)来执行它({alert('foo')}”)();
。或者,更可能的是,通过保存eval的结果并在以后检索和应用它。构造函数并在以后应用它们是非常有用的。mimisbrunr:在这种特殊情况下,您是如何了解Chrome对外部参数的要求的?