¿Espacio de nombres con IIFE en ES6?

Aparentemente,ES6 no necesita espacio de nombres porque cada archivo es un módulo separado.

Pero entonces, ¿cómo evito la interferencia global del espacio de nombres?

Por ejemplo,Babel compila miscripts/main.js archivo simplemente reemplazandoconst convar.

var alert = 'This line doesn\'t do anything.'
window.alert(alert)

Un espacio de nombres (llamadoANS a continuación) con un IIFE evita las colisiones de nombres:

const ANS = (function () {
  const alert = 'This works'
  window.alert(alert + '.')
  return {alert: alert + ' too.'}
})()
alert(ANS.alert)

Agregar propiedades al espacio de nombresANS es más limpio que agregarlos al espacio de nombres global,windowothis. Y, el IIFE proporciona más encapsulación.

Entonces, ¿no es la segunda forma, es decir, crear un espacio de nombres personalizado con un IIFE, mejor que la primera? Si es así, ¿hay una forma más nueva / más agradable de hacer esto en ES2015? ¿Por qué Babel no hace esto por mí?

Respuestas a la pregunta(4)

Su respuesta a la pregunta