我知道全局上下文中的"this"指的是全局对象。
在这里,我将一个名为 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
打印未定义。
造成这种差异的原因是什么?
编辑
我编辑了标题以显示我遇到的特定问题。我在作为重复链接的问题中找不到问题的答案。
我认为这是一个范围问题。就像在函数中声明变量一样,您无法在该执行上下文下访问它,因为您已将该变量添加到函数中的窗口对象,因此无法在全局执行上下文中控制台将其记录回。