我在一个剧本中读了一遍,但我不明白它的好处。
(function () {}).call(this);
另外,我试过运行它,
(function () { console.log('Hello World') }).call(this);
但它没有打印任何东西。
即使调用此(function () { console.log('Hello World') })()
也没有打印任何内容。怎么了?
答案 0 :(得分:2)
当我希望我的代码在浏览器窗口中工作时,我使用this
(在这种情况下this
引用window
)或 a {{ 3}}(在这种情况下this
引用工作者实例)。
.call(this)
适用于此,但当然你可以采用不同的方式。例如,这也可以:
(function(root) {
root.MyLibrary = MyLibrary;
}(this));
与往常一样,不止一种方法可以使这只众所周知的猫皮肤。
答案 1 :(得分:0)
可能作者希望改变IIFE的背景。传递this
毫无意义,因为即使没有window
,它也会引用call
。
这样的事情会改变范围内this
的含义:
(function () { console.log('Hello World', this) }).call({foo:1});
然而,我仍然没有看到这一点,因为你可能会这样做:
(function (fooObj) { console.log('Hello World', fooObj) })({foo:1});
我想说的更常见。