Пространство имен с 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? Почему Бабель не делает это для меня?

Ответы на вопрос(4)

Ваш ответ на вопрос