Why does function(){} not work, but (function(){}) does? (Chrome DevTools/Node)
本问题已经有最佳答案,请猛点这里访问。
我现在已经看到了这种奇怪的行为,我无法定义
1 | function(){} |
要么
1 2 3 | function(a){ console.log(a) } |
它抛出
但
Safari开发工具有一个更好的错误报告:它说
SyntaxError: Function statements must have a name.
好吧,如果你永远不会使用它,那么定义一个类似的函数是没有意义的。 但它仍然很奇怪。 我想我已经在问题中提供了答案。
JavaScript具有函数声明和函数表达式。前者不能立即调用,而后者可以。这是语言语法的问题。
功能声明:
1 2 3 | function foo() { // ... } |
函数表达式(在
1 2 3 | var foo = function() { // ... }; |
通过在函数周围添加括号,您强制将函数解析为函数表达式,因为不可能在括号内放置函数声明(只有表达式是预期和接受的):
1 2 3 | (function foo() { // ... }); |
然后,您可以立即调用它:
1 2 3 | (function foo() { // ... })(); |
有关更详细的说明,请查看JavaScript中的函数定义。