Пространство имен с IIFE в ES6?
По-видимому,ES6 не нуждается в пространстве имен потому что каждый файл является отдельным модулем.
Но тогда, как мне избежать вмешательства в глобальное пространство имен?
Например,галдеж компилирует мойscripts/main.js
файл, просто заменивconst
сvar
.
var alert = 'This line doesn\'t do anything.'
window.alert(alert)
Пространство именANS
ниже) с IIFE предотвращает конфликты имен:
const ANS = (function () {
const alert = 'This works'
window.alert(alert + '.')
return {alert: alert + ' too.'}
})()
alert(ANS.alert)
Добавление свойств в пространство именANS
чище, чем добавлять их в глобальное пространство имен,window
, или жеthis
, И IIFE обеспечивает дальнейшую герметизацию.
Итак, не является ли второй способ, т. Е. Создание пользовательского пространства имен с помощью IIFE, лучше, чем первый? Если так, есть ли более новый / более хороший способ сделать это в ES2015? Почему Бабель не делает это для меня?