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

bubnov

Пользователь
Регистрация
01.01.70
Сообщения
1
Реакции
0
Баллы
1
Привет,

Если я использую замыкание внутри IIFE следующим образом:
JavaScript: сравнение замыкания с 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, а не замыкания.

Спасибо
 
Сверху Снизу