IIFE (выражение функции, вызываемое непосредственно) - это просто имя, придуманное сообществом для этой конкретной конструкции:
(function() { /*...*/ })()
Это выражение функции, за которым непосредственно следует вызов функции этой функции. Вот и все. В вашем коде нет IIFE.
Мой вопрос: как вызывается анонимная функция?
Функции вызываются с использованием ссылки на них , их имя - просто функция отладки (и это ссылка на саму функцию внутри тела функций). Функции не нуждаются в имени:
let test = function /*irrelevant*/ () { };
let test2 = test;
test(); test2();
Если вы используете объявление функции , имя используется не только как имя функции, но и как имя переменной, которая ссылается на функцию:
function named() { }
едва равен (давайте проигнорируем здесь «подъем»):
var named = function named() { }
Если вы вызываете функцию, используя выражение функции в качестве одного из аргументов:
function called(reference) { }
called(function irrelevant() { })
затем выражение функции оценивается, функция создается и ссылка на нее передается функции called
в качестве аргумента, к которой затем можно получить доступ с помощью переменной reference
.