【发布时间】:2019-08-01 08:31:05
【问题描述】:
当我们在没有指定let 或var 的情况下创建变量时,它会被添加到浏览器中的窗口对象中。例如
function change(){
val = 20;
}
change();
console.log(window.val); //20
console.log(val); //20
在这里我得到两个控制台日志打印值20。但是我使用let 做同样的事情,它不会被添加到窗口对象中。我看到this answer 解释了为什么会发生这种情况。
let val = 20;
console.log(window.val); //undefined
console.log(val); //20
现在,在下面的代码中,有人可以解释一下,当我在函数内部分配一个非作用域变量时,为什么它没有被添加到window 作用域?而是如何更改使用let 声明的变量的值
let value = 10;
function change(){
value = 20;
}
change();
console.log(window.value); //undefined
console.log(value); //20 why this is 20?
【问题讨论】:
标签: javascript global-variables var let