с использованием выражения немедленно вызываемой функции (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?
Что именно происходит со вторым сниппетом?