考虑以下代码片段:
// Using var
var val = 20;
console.log(window.val); // Outputs: 20
// Using let
let val = 20;
console.log(window.val); // Outputs: undefined
在这两种情况下,val都是在全局范围内声明的,但使用let时访问window.val会返回undefined,而使用var时会正确返回20。
考虑以下代码片段:
// Using var
var val = 20;
console.log(window.val); // Outputs: 20
// Using let
let val = 20;
console.log(window.val); // Outputs: undefined
在这两种情况下,val都是在全局范围内声明的,但使用let时访问window.val会返回undefined,而使用var时会正确返回20。
var 和 let 在与全局对象(浏览器环境中的window)的交互方面有何不同。
这里有两点:
var
声明的变量将作为属性添加到全局对象中,并使它们可以作为该对象的属性进行访问。let
和
const
声明的变量不会作为属性添加到全局对象中。它们存在于作用域中,但不会在全局对象上创建属性