Eli*_*jah 11 javascript scope functional-programming
当我在Javascript中看到自调用匿名函数的示例时,我感到困惑,例如:
(function () { return val;}) ();
Run Code Online (Sandbox Code Playgroud)
此语法与以下内容之间是否存在差异:
function() { return val;} ();
Run Code Online (Sandbox Code Playgroud)
如果有人可以给我一个具体的区别,这将有助于解决一直困扰我多年的问题......
Bre*_*ton 14
Javascript没有块作用域,因此这是一种创建不会污染全局名称空间的临时本地作用域的方法.括号有两个用途:
见这里:http: //peter.michaux.ca/articles/an-important-pair-of-parens
在Safari 4中,以下代码(没有括号)导致"SyntaxError:Parse error":
function() { alert("Test"); }();
Run Code Online (Sandbox Code Playgroud)
...但以下代码按预期工作:
(function() { alert("Test"); })();
Run Code Online (Sandbox Code Playgroud)
更新:我还尝试了Firefox 3中的代码(通过Firebug),它的行为就像Safari一样.