【问题标题】:Why need I wrap anonymous function in parenthesis before calling it in Javascript? [duplicate]为什么需要在用 Javascript 调用匿名函数之前将其包装在括号中? [复制]
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2020-11-15
    相关资源
    最近更新 更多