Javascript :为什么我不能使用 'this' 关键字从函数内部访问添加到全局对象的属性?



我知道全局上下文中的"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打印未定义。

造成这种差异的原因是什么?

编辑

我编辑了标题以显示我遇到的特定问题。我在作为重复链接的问题中找不到问题的答案。

我认为这是一个范围问题。就像在函数中声明变量一样,您无法在该执行上下文下访问它,因为您已将该变量添加到函数中的窗口对象,因此无法在全局执行上下文中控制台将其记录回。

最新更新