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