Есть ли смысл в IIFE? Нельзя ли их заменить анонимными блочными областями?
Не могу не испытывать отвращение к IIFE (Immediately Invoked Function Expression). Если не брать в расчет модули, можно ли отказаться от них в пользу анонимных блочных областей? В чем принципиальная разница между ними?
Пример IIFE:
var outsideTest = 'Меня видно';
var result = (function(){
var insideTest = 'Меня не видно';
console.log(outsideTest);
return insideTest + ', если только так...';
})();
console.log(result);
console.log(insideTest);
Пример с блочной областью (ясно, что var здесь использовать не стоит):
let outsideTest = 'Меня видно';
let result;
{
let insideTest = 'Меня не видно';
var anotherInside = 'Видно:('
console.log(outsideTest);
result = insideTest + ', если только так...';
}
console.log(result);
console.log(anotherInside);
console.log(insideTest);