пока не приняли это
https://github.com/tc39/proposal-do-expressions можно использовать iife как замену
let name = 'vasya';
if (cond1) {
name = 'pavlek';
}
if (cond2) {
name = 'semen';
}
мы можем убрать let использовав iife
const vasya = (() => {
switch (true) {
case cond2: return 'semen';
case cond1: return 'pavlek';
default: return 'vasya';
}
})()
Пример может не идеален (вообще надо бы именованную функцию), но я иногда так делаю. Наглядней, чем let и цепочка условий.
Замыкания тут вообще не причем, любая функция в js образует замыкание, и iife конечно в том числе. В моем примере вот оно используется, но это не является обязательным.