我知道全局上下文中的'this'指的是Global对象。
在这里,我将一个名为value的属性添加到全局对象,然后将其打印到控制台。
this.value = 34;
console.log(this.value); //34
console.log(value); //Gives compile error 'value is not defined'
根据我的理解,在未在对象内声明的函数中,“this”指的是全局对象。
因此,此代码应该与上面完全相同。将名为“value”的属性添加到全局对象。
function b(){
this.value = 34;
}
b();
然而,这是输出。
console.log(this.value); //undefined
console.log(value); //34
this.value
打印未定义。
造成这种差异的原因是什么?
修改的
我编辑了标题以显示我遇到的具体问题。在重复的链接问题中,我无法找到问题的答案。
答案 0 :(得分:0)
我认为这是一个范围问题。就像在函数中声明变量一样,您无法在该执行上下文中访问它,因为您将该变量添加到函数中的窗口对象中,您无法在全局执行上下文中将其记录回来。