Из-за чего в коде ниже на момент выполнения самовызывающейся функции переменная f не определена? Ведь самовызывающиеся ф-и вроде как не поднимаются вверх по коду, как это происходит с записью аля "function x(){}".
let f = function(x) {
alert(x)
}
(function() {
f(1)
}())
Из-за отсутствия ;
после }
интерпретатор считает приведенный код не двумя независимыми блоками, а одним
let f = (function (){...})(function(){...}())
Таким образом самовызывающаяся функция считается параметром функции, которую присваивают в переменную f
. И так как параметры вычисляются до вызова самой функции, выполнение самовызывающейся функции происходит до присвоения f
какого либо значения.
Для решения достаточно расставить ;
на нужные места:
let f = function(x) {
alert(x)
};
(function() {
f(1)
}())
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть страница в которой просто написано в виде json, мне нужно как-то получать каждое из этих чтобы я мог с этим работатькак это реализовать?