underscore.js IIFE 语法是否有效?

Is the underscore.js IIFE syntax valid?

我刚刚看了一下 underscore.js source code,当我将源代码剥离到只包含 IIFE 时,它看起来像这样:

(function() {

}.call(this));

我一直使用带外括号的语法 (function() {}).call(this);,想知道这种语法是否也有效且通用?

如果您要具体询问外部 ) 的位置,那么它是紧跟在右大括号之后还是在整个表达式 doesn't matter for the most part 之后。无论哪种方式都不会影响 IIFE 的执行方式。

这里唯一的区别是 .call(this),它作为函数表达式的成员被调用 — 典型的 IIFE 只是紧跟在右大括号之后的内括号。使用 .call(this) 的原因在许多其他答案中有详细说明,包括 this one.