с использованием выражения немедленно вызываемой функции (IIFE)

Этот фрагмент кода отлично работает

const foo = 2;
(function (){
    console.log(foo);
})()

Теперь я добавил переменную foo который является функцией, но следующий фрагмент кода не работает,

const foo = function(){ return "foo" }
(function (){
    console.log("aa");
})()

Это вызывает ошибку: TypeError: (intermediate value)(...) is not a function

Однако перемещение объекта функции в рамках IIFE работает нормально (очевидно),

(function () {
    const foo = function () { return "foo" }
    console.log(foo())
})()

Версия (-и) узла: v12.12 / v10.16

Вопросы:

Это единственный способ работы с IIFE?

Что именно происходит со вторым сниппетом?

0 ответов

Другие вопросы по тегам