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