我试图理解一些代码:
(function (exports) {
exports.myProperty = "azerty";
console.log(exports)
}((this.myModule = this.myModule || {})));
我从这段代码中理解的是:
1)我正在执行IIFE和"这个"表示Window(全局对象)。
2)由于Window没有myModule属性,因此this.myModule = this.myModule会向Window对象添加一个新属性,并且此属性未定义。
3)(this.myModule = this.myModule)|| {}返回{},因此导出等于{}(空对象)
4)我正在添加一个属性" myProperty"导出对象所以export = {myProerty:" azerty"}
我不明白:执行此代码后,当我在console.log(窗口)时,我可以看到:
Window对象的属性myModule等于exports对象。 myModule和{myProperty:" azerty"}之间的关系如何解决? 我无法理解这一部分。
答案 0 :(得分:1)
你的#3错了。原始代码中的括号如下:
(this.myModule=this.myModule || {})
并按照以下方式进行评估:
this.myModule = (this.myModule || {})
如果创建了一个新的空对象,则会在通过函数参数分配给this.module
之前立即将其分配给exports
。因此window.myModule
和exports
都是对同一对象的引用。