2011-05-12 36 views

回答

10

Chrome浏览器正在抛出SyntaxError,因为您需要在函数中使用()或者需要命名它。

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

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

要么应该正常工作。

+0

完美,谢谢(第二个选项是我正在寻找的) - 你知道这是否会被所有浏览器支持? – 2011-05-12 14:48:34

+0

我不会,但我会这样认为。我知道它在FireFox中有效。 – zellio 2011-05-12 15:09:55

+1

“需要()你的函数或你需要命名它”---但为什么? – 2011-08-15 20:02:15

1

奇怪的是,Safari 5.1和Chrome 13.0.782.220在这种匿名功能的特殊情况下确实需要外层包装。我不知道为什么,因为这个表达没有含糊不清,或者没有含糊不清的用处而不是含糊不清。 Firefox 6.0.2是完美的快乐没有parens。

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