声明性和对象环境记录如何与“ var”,“ let”和“ const”相关?

时间:2019-07-03 21:29:33

标签: javascript ecmascript-6 javascript-scope

我正在尝试更深入地研究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变量。我不明白当在上面的示例中在函数外部使用letconst时会发生什么情况?

根据其他答案,我认为此行为与ES6环境记录有关,但是当我阅读reference book时,对我来说确实没有任何意义。

有人可以用比那本参考书更简单的术语来解释这一点吗?

0 个答案:

没有答案