Есть ли смысл в 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);


Ответы (0 шт):