Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:为什么可以';使用';从函数内部访问添加到全局对象的属性;这';关键词?_Javascript - Fatal编程技术网

Javascript:为什么可以';使用';从函数内部访问添加到全局对象的属性;这';关键词?

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”指的

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

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

编辑


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

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