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