考慮下面的代碼,聲明使用var
關鍵字文件範圍變量:如何使用數組表示法訪問使用'var'聲明的文件範圍變量?
// File a.js
var foo = "Hello, foo!"; // I know I can remove 'var', but that's not what I'm asking
logVar("foo");
function logVar(name) {
var text = global[name]; // 'global' does not work to access 'foo'!!!
console.log(text);
}
我想知道如何使用數組表示法(訪問文件範圍的變量foo
即給定的文本變量名稱 - 如global["foo"]
,正如註明不起作用)。
我剛剛花了大約一個小時尋找這個;即here,here或here。很顯然,通過在文件範圍內使用var foo = ...
語法(而不是僅在foo = ...
),該變量不會出現在global
範圍內,而是出現在節點爲包裝文件而創建的文件的閉包範圍內。
現在,我知道我可以從變量聲明中刪除var
。但這不是我要問的。
我想知道是否有可能訪問文件範圍變量聲明var
使用數組表示變量名稱的文本字符串。
這是可能的節點?如果是這樣,怎麼樣?
我想說這是不可能的。你可以在全局範圍內做到這一點,因爲全局範圍的詞彙環境可以作爲一個綁定(全局範圍是一件非常特殊的事情),但我懷疑這是爲模塊範圍提供的。 – MinusFour