- 13, May 2024
- #1
Привет,
Если я использую замыкание внутри IIFE следующим образом:
Код (разметка): Мне кажется, что в первом примере при автоматическом запуске IIFE он возвращает объект externalFunction и добавляет к нему метод kir.
Но когда я запускаю externalFunction вручную, все по-другому, и я не могу получить доступ к методу kir.
Я немного в замешательстве!
Может кто-нибудь объяснить мне, почему я не могу получить доступ к методу Кира во втором примере, запустив это?:
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, а не замыкания.
Спасибо