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.
我刚刚看了一下 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.