我们以下面的代码为例:
const constVar = 'some string';
let letVar = 'some string';
var varVar = 'some string';
(function() {
console.log(window.constVar); // prints undefined
console.log(window.letVar); // prints undefined
console.log(window.varVar); // prints 'some string'
})();
根据constmdn对声明的描述:
这个声明创建了一个常量,其作用域可以是全局的,也可以是声明它的块的局部的。
我假设let以同样的方式工作。
在这种情况下,“块”包含在全局范围内。我想这里的重要区别是,虽然const constVar是“全局”可访问的,但它仍然没有在window对象上定义它。
这让我认为全局范围和window对象是不同的。这最终导致 2 个问题。
为什么使用
var关键字 get 定义的window变量const和使用和let未定义的变量定义在window?“全局范围”和
window浏览器提供给我们的对象有什么区别。