странно почему так происходит, ведь блок кода в {} должен быть изолирован. Поэтому появились const и let и устарел var
Также в учебнике конструкция
IIFE :
(function () {
...
}())
считается устаревшей
ведь появилось лексическое окружение в блоке кода,
но оно работает не всегда и может создавать ошибки:
let a = 1
function x() {
return 1
}
{
let a = 2
function x() {
return 2
}
}
alert(a) // по прежнему 1
alert(x()) // неожиданно 2
выходит для инкапсуляции без IIFE не обойтись?