两种立即调用匿名函数的方法(function(d){}());和(function(x){})();

时间:2012-05-02 15:39:56

标签: javascript

  

可能重复:
  Are “(function ( ) { } ) ( )” and “(function ( ) { } ( ) )” functionally equal in JavaScript?

我有这些特殊字符的问题,我找不到一个好的答案。 (有人知道如何用它们搜索吗?)

我已经看到两种模式可以立即调用匿名函数http://jsfiddle.net/ukqS8/1/

(function(d) {
    document.write(d*2);
})(3);

(function(x) {
    document.write(x*2);
}(3));

不同之处在于放置(3):在右括号内部或外部。

我在这里找到了第二个案例的一个很好的解释:

javascript function vs. ( function() { ... } ());

我理解为function(x) {...}创建了一个函数对象,(3)成为它的参数,而enclosing()告诉解释器里面的内容是一个语句。

在第一种情况下,似乎使(function(d) {...})语句以某种方式也是一个函数,然后将(3)应用于此语句/函数。

所以,它们似乎都以相同的方式执行。这里真的有区别吗?范围(我怀疑)?这两种选择更可取吗?

2 个答案:

答案 0 :(得分:2)

您的理解不正确。

这些都是函数表达式;括号的位置在这里没有区别。

然而,there can be a subtle difference

答案 1 :(得分:1)

它们执行完全相同。区别仅在于语法。