Из-за чего в коде ниже на момент выполнения самовызывающейся функции переменная 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)
}())
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть страница в которой просто написано в виде json, мне нужно как-то получать каждое из этих чтобы я мог с этим работатькак это реализовать?