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

mat*_*kov 5 javascript closures

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

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

// Parentheses inside
(function(a, b) {
    //...
}(x, y));
Run Code Online (Sandbox Code Playgroud)

在这里,这些闭包之间有区别吗?是否有一个地方有一个场景出现差异?

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

FOO.Bar = (function() {
    //...
}());
Run Code Online (Sandbox Code Playgroud)

Jac*_*sen 2

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

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

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

实际上你可以这样做

FOO.Bar = function () {
    return 123;
}();
Run Code Online (Sandbox Code Playgroud)

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