V8 / JS运行时:JavaScript窗口函数如何在没有前缀“window”的情况下使用

我不太了解JS控制台,但是我正在进入命令行编程,在开始使用外部程序的shell / node之前,最好先了解我的本地环境

我的猜测是所有的命令行语句都是with (window) eval(/* whatever user typed before hitting enter/*)来调用的with (window) eval(/* whatever user typed before hitting enter/*)但是这看起来很糟糕。 上下文肯定绑定为“窗口”,如果我console.log(this)但我不知道为什么/如何

这几乎就像用户cd到窗口对象中,将其设置为上下文

所有的JavaScript都有一个全局范围。 在浏览器中,全局范围称为“窗口”,它是对窗口对象的引用。 在节点中,它被称为“全局”,并引用节点中的全局JS命名空间。

浏览器中的“窗口”全局有一堆属性。 像“控制台”或“位置”的东西。 当您想要与这些代码段交谈时,您可以select以“窗口”作为前缀。 例如:要logging一些东西到控制台,你可以input:

 window.console.log("HELLO"); 

或者你可以离开“窗口”。 closures电话,像这样:

 console.log("HELLO"); 

浏览器中的全局“窗口”对象是页面上唯一可选的对象。 任何时候当你看到一个未使用“var”(或ES6中的“let”和“const”)声明的variables的引用时,这意味着该variables只是全局对象上的一个属性。