2011-05-03 83 views
2

我注意到在括号()JavaScript解析器如何解析? (闭包模式没有括号)

(function() { 
    var foo = 1; 
    return function() {return foo} 
}()) 

它提出了一个问题缠绕封闭的这种模式,这是怎么应该被解析:

function() { 
    var foo = 1; 
    return function() {return foo} 
}() 
+0

它不乞讨的问题,它提出了问题 – Claudiu 2011-05-03 18:19:07

+0

这不一定是封闭,只是一个匿名函数。 – delnan 2011-05-03 18:20:36

+0

我假设你刚刚省略了左手边?如果您不将它们分配给变量,那么这两个表达式都是无效的。 – 2011-05-03 18:32:45

回答

0

括号围绕函数是必要的,因为当省略时,编译器假定它是一个函数语句。

函数语句不可调用。

+0

括号不是必需的:http://jsfiddle.net/fkling/CFzuy/ – 2011-05-03 18:31:50

+0

@Felix:不完全一样的例子,是吗?我想你认为埃文可能不是。 – 2011-05-03 18:42:48

+0

@ two7s_clash:对不起,我不明白你的评论。 – 2011-05-03 18:44:22