И по обращению window.q мы ее получаем с var и let одинаково или какой нюанс я упускаю?
var и let - это разные механизмы объявления переменных. Я же привел ссылку на мануал - там подробно все расписано. let не попадает в глобальную область видимости. var - изначальный механизм объявления переменных в JS, а let и const - более новые способы объявления переменных, предназначенные для решения новых задач. Так исторически сложилось.let a = 1;
{
let a = 2;
console.log('a 2 =', a);
}
console.log('a 1 =', a);<- a 2 = 2
<- a 1 = 1