Комментарии 5
function outer(param) {
function inner() {
console.log('delayed output: ', param);
}
return inner;
}
setTimeout(outer('something to print'), 1000)
В целом статья хорошая, все по делу.
В статье мало сказано про самое главное – про само правило создания областей видимости, когда они создаются, и, соответственно, почему всё описанное в статье работает именно так.
Приведены примеры фактического использования областей видимости, но важно что, прежде всего, они вложены друг в друга, и текущий выполняемый код имеет доступ ко всем наружным областям видимости из текущей точки, корневая область из которых является глобальной областью видимости.
И вот от этого уже пляшет всё остальное – прежде всего, блочная конструкция, которая создает область видимости, и без разницы что это, if, while, else, или вообще ничего (просто блочная конструкция).
Поэтому, вероятно, всё значительно проще чем написано в статье – не нужно ничего запоминать, а просто знать что как только вы используете блочную конструкцию ({...}), вы создаете область видимости.
JavaScript: область видимости простыми словами