我刚刚看了underscore.js source code,当我将源代码剥离到包含IIFE的裸代码时,它看起来像这样:
(function() {
}.call(this));
我总是使用外部parantheses (function() {}).call(this);
的语法,并想知道这种语法是否也有效且常见?
答案 0 :(得分:2)
如果你具体询问外)
的位置,那么它是在紧接括号之后还是在整个表达式doesn't matter for the most part之后。无论哪种方式都不会对IIFE的执行方式产生影响。
这里唯一的区别是.call(this)
,它作为函数表达式的一个成员被调用 - 典型的IIFE只有紧跟在右括号之后的内括号。使用.call(this)
的原因详见其他一些答案,包括this one。