为什么使用 'let' 访问 'window.variable' 会返回 'undefined' 而不是使用 'var' 访问 'window.variable'?

问题描述 投票:0回答:1

考虑以下代码片段:

// 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。

varlet 在与全局对象(浏览器环境中的window)的交互方面有何不同。

javascript javascript-objects javascript-scope
1个回答
1
投票

这里有两点:

  1. 在全局范围内用
    var
    声明的变量将作为属性添加到全局对象中,并使它们可以作为该对象的属性进行访问。
  2. 在全局范围内用
  3. let
    const
     声明的
    变量不会作为属性添加到全局对象中。它们存在于作用域中,但不会在全局对象上创建属性
© www.soinside.com 2019 - 2024. All rights reserved.