Javascript 全局变量:全局执行上下文对象还是窗口对象?

Javascript 全局变量:全局执行上下文对象还是窗口对象?,javascript,Javascript,全局变量真正存储在哪里?我知道这是存在的,但我目前正在读一本书,书中说全局变量存储为全局执行上下文对象的属性 但是我在第一段中包含的链接说它们是Window对象的属性。那么窗口和全局执行上下文对象(如果有的话)之间的关系是什么呢?如果没有,我读的书是不是错了 全局变量真正存储在哪里 全局变量是全局执行上下文中的属性,与函数变量是函数词法环境的属性相同 为方便起见,它们也是全局对象的属性 我目前正在读一本书,书中说全局变量存储为全局执行上下文对象的属性 或多或少。ES5的术语发生了变化,以前有一个

全局变量真正存储在哪里?我知道这是存在的,但我目前正在读一本书,书中说全局变量存储为全局执行上下文对象的属性

但是我在第一段中包含的链接说它们是Window对象的属性。那么窗口和全局执行上下文对象(如果有的话)之间的关系是什么呢?如果没有,我读的书是不是错了

全局变量真正存储在哪里

全局变量是全局执行上下文中的属性,与函数变量是函数词法环境的属性相同

为方便起见,它们也是全局对象的属性

我目前正在读一本书,书中说全局变量存储为全局执行上下文对象的属性

或多或少。ES5的术语发生了变化,以前有一个变量对象的概念来在执行上下文中存储变量,但它只是一个规范设备,而不是可以访问的实际对象

ES5引用了一个词汇环境,其中包括一个变量环境,请参见

但是我在第一段中包含的链接说它们是Window对象的属性

在浏览器中,窗口对象实际上是全局对象的别名。窗口是一个宿主对象,因此它可以比内置全局对象具有更多的属性和方法

那么窗口和全局执行上下文对象(如果有的话)之间的关系是什么呢

我想上面已经解释过了。简而言之,在浏览器中,全局对象和窗口对象实际上(但不是完全)是相同的

如果没有,我读的书是不是错了

没有,但这似乎把你弄糊涂了


另请参见:

两者都可以是正确的。我认为全局执行上下文指的是实现,它不一定意味着
窗口
对象。
窗口
对象是浏览器中的全局对象。“许多主机环境将在全局对象中放置一个属性,其值是对全局对象本身的引用”,因此它不一定被称为
窗口
,但仍然指代全局对象。没有“全局执行上下文对象”,有一个和一个想法