Chrome - eval - функция () - PullRequest
8 голосов
/ 12 мая 2011

Почему Chrome выбрасывает

SyntaxError: Unexpected token (

, когда я пытаюсь позвонить:

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

?

Ответы [ 2 ]

10 голосов
/ 12 мая 2011

Chrome генерирует ошибку SyntaxError, потому что вам необходимо () использовать функцию или назвать ее.

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

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

либо должно работать правильно.

1 голос
/ 12 сентября 2011

Как ни странно, в Safari 5.1 и Chrome 13.0.782.220 в этом особом случае анонимных функций требуются внешние парены.Я понятия не имею, почему, так как выражение не более двусмысленно или менее полезно без скобок, чем с.Firefox 6.0.2 совершенно счастлив без паренов.

Кто-нибудь знает, определяет ли спецификация языка Javascript эти внешние парены и нужны ли они для случаев, отличных от анонимных функций?

...