JavaScript: сравнение замыкания с IIFE и без него

  • Автор темы bubnov
  • 26
  • Обновлено
  • 13, May 2024
  • #1
Привет, Если я использую замыкание внутри IIFE следующим образом:

 
outerFunction();
outerFunction.kir();
Код (разметка): Мне кажется, что IIFE возвращает объект с именем externalFunction и добавляет к нему метод kir. Теперь я могу получить доступ к методу kir объекта externalFunction с помощью следующего кода:
  outerFunction(); outerFunction.kir(); 
Код (разметка): Но если я не использую IIFE для того же примера:
 outerFunction().kir();
Код (разметка): Я могу получить доступ к методу kir, только если запущу это:
  function outerFunction () { const outer = `I'm the outer function!`; var innerFunction = function() { const inner = `I'm the inner function!`; console.log(outer); // I'm the variable from the outer function! } return { kir:innerFunction } } 
Код (разметка): Почему это не сработает, если я запущу это?:
 outerFunction.kir();


Код (разметка): Мне кажется, что в первом примере при автоматическом запуске IIFE он возвращает объект externalFunction и добавляет к нему метод kir.

Но когда я запускаю externalFunction вручную, все по-другому, и я не могу получить доступ к методу kir.

Я немного в замешательстве!

Может кто-нибудь объяснить мне, почему я не могу получить доступ к методу Кира во втором примере, запустив это?:

  var outerFunction = (function() { // this is an IIFE const outer = `I'm the outer function!`; var innerFunction = function() { const inner = `I'm the inner function!`; console.log(outer); // I'm a variable from the outer function! } return { kir:innerFunction } })(); 
Код (разметка): Я думаю, это скорее вопрос понимания IIFE, а не замыкания. Спасибо

bubnov


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно