Я пытаюсь понять код:
(function (exports) {
exports.myProperty = "azerty";
console.log(exports)
}((this.myModule = this.myModule || {})));
Что я понял из этого кода:
1) Я выполняю IIFE, и «это» представляет собой окно (глобальный объект).
2) Поскольку у Window нет свойства myModule, this.myModule = this.myModule добавляет новое свойство к объекту Window, и это свойство не определено.
3) (this.myModule=this.myModule) || {} возвращает {}, поэтому экспорт равен {} (пустой объект)
4) Я добавляю свойство "myProperty" для экспорта объекта, поэтому export = {myProerty: "azerty"}
Чего я не понимаю: после выполнения этого кода, когда я console.log(окно), я вижу, что:
Объект Window имеет свойство myModule, равное объекту экспорта. Как была разрешена связь между myModule и {myProperty: "azerty"}? Я не могу понять эту часть.
this.myModule = this.myModule || {}
этоthis.myModule = (this.myModule || {})
, а не(this.myModule = this.myModule) || {}
. - person Ry-♦   schedule 12.06.2018exports
, также назначаетсяthis.myModule
вthis.myModule = this.myModule || {}
. - person Felix Kling   schedule 12.06.2018