7

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

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

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

在这里,这些闭包之间有区别吗?有没有一种情况有所不同?

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

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

1 回答 1

2

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

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

无论您是在括号内还是之后调用它都无关紧要。“约定”已经发生,因此您可以调用它。

实际上你可以做到这一点

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

上面已经是一个函数表达式,因为您正在将匿名函数分配BarFOO.

于 2013-10-23T20:09:29.280 回答