2015-09-30 71 views
1

我不太瞭解JS控制檯,但我正在轉向命令行編程,在我之前知道我的本機環境會很好開始在外部使用shell /節點V8/JS運行時:JavaScript窗口函數如何在沒有前綴「窗口」的情況下可用

我的猜測是所有的命令行語句被調用with (window) eval(/* whatever user typed before hitting enter/*),但這似乎是一種可怕的做法。上下文絕對是必然的「窗口」,如果我console.log(this)但我不知道爲什麼/如何

這幾乎就像用戶cd倒是到窗口對象將其設置爲背景

+1

Node中沒有'window'對象。有一個全局的上下文,但事情在Node中比在瀏覽器中稍有不同。 – Pointy

+0

你在問什麼?關於命令行?關於'window'?如果是這樣,你是否期望有相當於'window.scrollX'(例如)? (沒有......) – Amit

+0

這就是全球範圍的工作原理。頂層作用域是綁定到全局對象的對象環境(瀏覽器中的'window',節點中的''global'') – Bergi

回答

2

所有JavaScript有全球範圍。在瀏覽器中,全局範圍稱爲「窗口」,它是對窗口對象的引用。在節點中,它被稱爲「全局」,並引用節點中的全局JS命名空間。

瀏覽器中的「window」global具有一堆屬性。諸如「控制檯」或「位置」之類的東西。當您想要與這些代碼段交談時,您可以選擇以「窗口」作爲前綴。例如:要記錄東西到控制檯,您可以輸入:

window.console.log("HELLO"); 

或者您可以離開「窗口」。關閉呼叫,如下所示:

console.log("HELLO"); 

瀏覽器中的全局「窗口」對象是頁面上唯一的可選對象。每當您看到一個未使用「var」(或ES6中的「let」和「const」)聲明的變量時,這意味着變量只是全局對象上的一個屬性。

+0

對,我可以看到一個全局變量,如果它是'var console = function(){} '但我相信它實際上是'window.console = function(){...}'或'window =(function(){this.console = function(){...}})()'而不是'window '是一些功能範圍,我們現場添加線條? – neaumusic

+0

編輯我的回覆,爲您添加答案。 – frosty

相關問題