【发布时间】:2011-12-20 23:06:27
【问题描述】:
可能的重复:
Why this kind of function invocation is wrong in JavaScript?
Is there any reason to wrap anonymous JavaScript functions in braces?
有没有很好的解释为什么我必须在括号中包装匿名函数才能调用它,如下所示:
(function() { alert('foo'); })();
而不仅仅是
function() { alert('foo'); }();
?
在其他语言中,函数只是您可以传递的东西,例如 Clojure。在 Clojure 中,函数调用如下所示:(function args),例如:(+ 1 2)。您可以在通常使用命名函数的任何地方替换匿名函数:((fn [a b] (+ a b)) 1 2)。在 Javascript 中,情况似乎并非如此。
【问题讨论】:
-
甚至这个
(function() { alert('foo'); }()); -
所以你知道,除了括号之外,还有很多方法可以使它成为匿名函数表达式。例如
+function() { alert('foo'); }();。如果使用括号,您可能会遇到特定问题。 -
我认为可以解释的最简单的方式(可能是最糟糕的方式)——因为函数是对象,反之亦然,所以在函数周围添加括号,你就是在定义一个对象。跨度>
标签: javascript clojure