2013-10-10 40 views
0
a = 123; // becomes global var 

var b = 234; // local var 

function f() {} // local func 

g = function() {} // got a global func 

現在怎麼(目前和其他局部變量)打印ag(和所有其他的全局變量爲準),但不bf的Javascript:枚舉全局變量

console.log(this)// is not working. 

編輯: 建議使用「窗口」變量將只在瀏覽器中運行,但嵌入的JavaScript或Node.js的沒有一個「窗口」變量。

+2

'的console.log(窗口);' – Peter

+2

Object.getOwnPropertyNames(本) – dandavis

回答

0

如何:

var globals = window || global; 
for (var key in globals){ 
    console.log(window[key]); 
} 
+0

它說: 「沒有定義窗口」(我用的node.js在當時) – exebook

+0

我沒有看到atob()或escape()在那個列表中,是不是那些全局變量? – dandavis

+0

@exebook我剛剛編輯,以支持節點.. – marteljn

0

所有的全局變量都存儲在瀏覽器中window對象。或者,它們存儲在Node.j中的globalGLOBAL對象中。您可以枚舉該對象的鍵,但請記住它將包含很多,而不僅僅是用戶定義的全局變量。

+0

嗯。 window.hasOwnProperty('toString')爲false,但toString()不是未定義的。不要忘記Object.prototype! – dandavis

0

全局變爲連接到全局對象,它在瀏覽器中是窗口。

a = 123 

相同

window.a = 123 
+0

node.js中的全局對象是什麼? – exebook