Фон
При импорте модулей в JavaScript мы загрязняем глобальное пространство имен именем импортированного модуля:
foo.js
export foo() {..};
export const bar = 3.14;
index.js
import { foo, bar } from './foo.js';
Вопрос
В index.js
, foo
и bar
живут в глобальном пространстве имен, верно?Итак, допустим, я публикую этот модуль, и кто-то использует его в своем HTML-файле вместе с другим скриптом, который также определяет переменные foo
и bar
в глобальном пространстве имен.Разве у нас не было бы столкновения тогда?
Я думаю, это можно решить, обернув все в main.js
во IIFE.Но по какой-то причине ESLint жалуется на это, заставляя меня задаться вопросом, не являются ли IIFEs предпочтительным / рекомендуемым подходом для защиты глобального пространства имен.
- Будет ли глобальное пространство имен загрязнено
foo
иbar
? - Если да, то как мне этого избежать?
Спасибо.