Про var/let/const в module ECMAScript и особенности поведения связанные с Global Enviroment.Декларация имен идентификаторов, с использованием variable statement имеет одну неприятную особенность, связанную с выполнением в Global Enviroment. А именно это приводит к дополнительным издержкам для обеспечения двунаправленной связи между идентификатором и Global Object, когда изменение данного связанного с Property в Global Object, должно быть так же отражено в аналогичной связи идентификатора ( декларируемого при помощи variable statement)
Подобное поведение, имеет издержки настолько значимые, что рекомендовано как можно меньше использовать любых выражений ECMAScript, связанных с этим поведением:
//Global Enviroment
function() {};
var doThing = ()=>{};
new Function('a', 'a+1');
Подобных особенностей поведения в Global Environment лишены let/const declaration.
Поведение же для Module Environment, что для variable statement, что для let/const declaration ничем не отличается.
Вместо ИГОГО:Использование var или function или Function для Global Enviroment - стоит дополнительных издержек. И этого нужно избегать.
Использование let/const для Global Environment, напротив их лишены.
Использование var function Function let const в Module Environment ничем не отличаются.
Важная ремарка:
Речь идет о использовании идентификатора в том окружении где он был декларирован.
Ранее заявленные проблемы с производительностью let/const в условиях их использования за пределами места их декларации, никуда не делись и остаются теми же и для module environment.