В js переменные это всегда свойства какого либо объекта любое объявление var, let, const расширяет «[[scope]]» (специальный объект) текущей функции (области видимости). При создании замыкания (новой функции в текущей области видимости) создается новый [[scope]] в котором есть ссылка на родительский [[scope]] и т.д. пока не дойдет до глобального объекта.
т.е. все переменные находятся в одной большой древовидной структуре
|