内部括号与外部括号之间的区别

时间:2013-10-23 20:08:22

标签: javascript closures

有人可以解释这些闭包之间的区别吗?有区别吗?我以前没见过第二个例子(里面的括号)。

(function(a, b) {
    //...
})(x, y);

// Parentheses inside
(function(a, b) {
    //...
}(x, y));

在这里,这些闭包之间有区别吗?是否存在有区别的情况?

FOO.Bar = (function() {
    //...
})();

FOO.Bar = (function() {
    //...
}());

1 个答案:

答案 0 :(得分:1)

没有。在这两种情况下,它们完全相同。

将函数包装在括号中时会发生什么,从函数声明到函数表达式,可以立即调用。

无论是在括号内调用还是在无关紧要之后调用它。 “对话”已经发生,你可以调用它。

实际上你可以做到这一点

FOO.Bar = function () {
    return 123;
}();

上面已经是一个函数表达式,因为您正在为Bar上的属性FOO分配一个匿名函数。