在下面的場景中,如果我不知道它們的名稱,如何獲得對eval()期間聲明的變量的引用?在JavaScript中獲取對eval()期間創建的局部變量的引用
function test() {
eval("var myVariable = 5");
var locals = magic() // TODO What should we do here?
alert(locals["myVariable"]); // returns myVariable
}
請注意:正在評估的JavaScript來自可信來源。
你有什麼影響你傳遞什麼樣的代碼爲'能力的eval()'樣子?換句話說,你是否可以改變這些代碼來完成這項工作,或者你是否使用來自另一個源代碼的代碼,而且你不能改變它? – Pointy 2010-06-16 14:34:21
我可以改變代碼;你有什麼建議? – dpq 2010-06-16 14:37:16
那麼,如果你可以明確地聲明一個具有可預測名稱的對象,然後將其他(不可預知的)屬性放在該對象中(請參閱@tomalak的答案),那麼你可以使用它。但是'eval()'不會創建一個新的作用域,並且據我所知,無法以一種可以讓它像對象一樣對待它的方式獲得對本地「關閉」作用域的引用。 – Pointy 2010-06-16 14:41:01