Как декларативные и объектные записи окружения относятся к "var", "let" и "const"?
Я пытаюсь углубиться в javascript, и хотя я нашел объяснения различий между "var", "let" и "const", а также объяснения ES6 "записи среды" (декларативные и объектные), я все еще потеряно, почему следующий код работает так, как он работает, когда я набираю его в консоли браузера Google Chrome:
var a = 2;
let b = 4;
console.log(window.a); // 2
console.log(window.b); // undefined
console.log(a); // 2
console.log(b); // 4
Если console.log(b)
печатает 4, но console.log(window.b)
печать undefined
тогда какой объем b
определяется в?
Я понимаю что когда var
используется вне функции, создает undefined
переменная в глобальной области видимости. Я не понимаю, что происходит, когда let
или же const
используется вне функции, как в примере выше?
На основании других ответов я предполагаю, что это поведение как-то связано с записями среды ES6, но когда я читаю справочник, оно действительно не имеет смысла для меня.
Может ли кто-нибудь объяснить это несколько проще, чем в этом справочнике?