为什么我需要在Javascript中调用它之前在括号中包装匿名函数?

时间:2011-12-20 23:06:28

标签: javascript clojure

  

可能重复:
  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中,函数调用如下所示:(函数args),例如:(+ 1 2)。您可以在通常使用命名函数的任何地方替换匿名函数:((fn [a b](+ a b))1 2)。在Javascript中,情况似乎并非如此。

1 个答案:

答案 0 :(得分:1)

因为函数周围没有括号,所以代码是一个错误的函数声明,并且在其末尾添加()是语法错误。

但是,如果在函数周围有括号,则会得到一个指向匿名函数的函数指针,该函数可以通过在其末尾添加()来执行。