【问题标题】:Why global let variables not added to window object of browser? [duplicate]为什么全局变量不添加到浏览器的窗口对象? [复制]
【发布时间】:2020-06-06 08:41:39
【问题描述】:

考虑下面我在我的 chrome 浏览器控制台中运行的代码:

var x = "hello";

let foo =  function(){
  console.log("hi");
};

console.log(x); // hello
console.log(foo()); //hi

console.log(window.x); // hello
console.log(window.foo()); // Error

如果我使用var foo =... 而不是let foo = ..,那么这将有效。为什么 ?

【问题讨论】:

标签: javascript dom


【解决方案1】:

这是design

let 允许您声明限制在块语句或使用它的表达式的范围内的变量,这与 var 关键字不同,它在全局范围内定义变量,或者在本地定义整个函数,而不考虑块范围。 var 和 let 之间的另一个区别是后者仅在解析器评估它时才被初始化为一个值(见下文)。

就像 const 一样,let 不会创建窗口的属性 全局声明时的对象(在最顶层范围内)。

猜你喜欢
  • 2021-08-18
  • 2018-04-25
  • 1970-01-01
  • 2014-01-25
  • 2014-06-18
  • 2019-02-25
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
相关资源
最近更新 更多