有人可以解释这些闭包之间的区别吗?有区别吗?我以前没见过第二个例子(里面的括号)。
(function(a, b) {
//...
})(x, y);
// Parentheses inside
(function(a, b) {
//...
}(x, y));
在这里,这些闭包之间有区别吗?是否存在会有区别的情况?
FOO.Bar = (function() {
//...
})();
FOO.Bar = (function() {
//...
}());
答案 0 :(得分:1)
没有。在这两种情况下,它们完全相同。
将函数包装在括号中时会发生什么,从函数声明到函数表达式,可以立即调用。
无论是在括号内调用还是在无关紧要之后调用它。 “对话”已经发生,你可以调用它。
实际上你可以做到这一点
FOO.Bar = function () {
return 123;
}();
上面已经是一个函数表达式,因为您正在为Bar
上的属性FOO
分配一个匿名函数。