В уроке Udacity о немедленно вызываемых функциональных выражениях (относительно предоставленного фрагмента кода) говорится:
Возвращаемая функция закрывает (т. е. захватывает) переменную hi. Это позволяет myFunction поддерживать частное, изменяемое состояние, доступ к которому вне функции невозможен! Более того: поскольку выраженная функция вызывается немедленно, IIFE красиво упаковывает код, чтобы мы не загрязняли глобальную область видимости.
Я изо всех сил пытаюсь понять, какое непосредственное отношение к вызову анонимной функции имеет к предотвращению того, чтобы переменная hi
«загрязняла глобальную область», и поскольку hi
уже определена в функции, разве она уже не находится в локальной/частной области?
const myFunction = (
function () {
const hi = 'Hi!';
return function () {
console.log(hi);
}
}
)();
hi
было доступно из глобальной области видимости, и создать еще одно имя, с которым не может возникнуть конфликт. - person Patrick Roberts   schedule 20.06.2018myFunction = function () { console.log(hi) }
, потому что это результат iife, но если вы не используете iife, вам придется объявитьhi
во внешней области. Если вы сделаете это в самом высоком масштабе, вы получитеhi
в своем объектеwindow
илиglobal
(в зависимости от того, что у вас есть), тем самым загрязняя его. - person apokryfos   schedule 20.06.2018