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

时间:2018-06-13 02:59:28

标签: javascript

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

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

修改

我编辑了标题以显示我遇到的具体问题。在重复的链接问题中,我无法找到问题的答案。

1 个答案:

答案 0 :(得分:0)

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