javascript - 内部和外部带括号的闭包之间的区别

标签 javascript closures

<分区>

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

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

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

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

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

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

最佳答案

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

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

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

其实你可以做到这一点

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

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

关于javascript - 内部和外部带括号的闭包之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551339/

相关文章:

javascript - Socket.io自动超时和传输错误

javascript - 如何全局访问使用 JavaScript 加载的图像的属性

caching - "Expected type parameter, found reference to type parameter"实现通用缓存结构时

generics - 参数类型 `T` 可能活得不够长

swift - swift 中的闭包和 withUnsafeBufferPointer()

javascript - 固定div时防止动画跳转

javascript - 根据其他两个多选中的选择填充两个多选

c# - 在外部 JavaScript 文件中插入动态值的安全方法

c++ - lambda 的捕获变量被重置

swift - 表达式 () -> () = {} 在 Swift 中是什么意思?