У меня есть самовызывающаяся функция (IIFE) в JavaScript:
(function showMessage() {
console.log("Сообщение выведено!");
})();
Мне нужно понять, можно ли как-то вызвать эту функцию showMessage
еще раз позже в коде? Есть ли способ получить доступ к имени функции после того, как она уже выполнилась? Пробовал просто написать showMessage()
, но получаю ошибку, что функция не определена. Может быть, нужно как-то по-другому объявить IIFE или сохранить ссылку на функцию?
IIFE запускается один раз и всё - ссылки на неё не остается. Хочешь вызывать функцию много раз? Сделай обычную функцию function showMessage() {...}
или через переменную const showMessage = function() {...}
. Можешь ещё вернуть функцию из IIFE: const showMessage = (function() { return function() { console.log('test'); }; })();
- тогда showMessage()
будешь вызывать сколько хочешь.
Зачем IIFE, если планируешь вызывать повторно? Это противоречит самой идее. IIFE предназначена для одноразового выполнения и инициализации. Если нужно вызывать много раз, лучше объявить обычную функцию и не заморачиваться с такими конструкциями.
Твоя IIFE уже отработала и исчезла из памяти. Имя функции видно только ей самой, снаружи к нему не добраться. Хочешь переиспользовать? Присвой функцию переменной перед вызовом: const myFunc = function showMessage() { console.log("Сообщение выведено!"); }; myFunc();
Потом вызывай myFunc()
когда надо. Или сохрани результат выполнения IIFE в переменную и работай с ним.