我正在尝试更深入地研究 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 环境记录有关,但是当我阅读参考书时,它对我来说确实没有意义。
有人可以用比那本参考书更简单的术语来解释这一点吗?