在下面的场景中,如果我不知道他们的名字,我怎样才能获得对eval()期间声明的变量的引用?
function test() {
eval("var myVariable = 5");
var locals = magic() // TODO What should we do here?
alert(locals["myVariable"]); // returns myVariable
}
请注意:正在评估的JavaScript来自可靠的来源。
答案 0 :(得分:2)
eval()在与调用者相同的范围内运行,因此这将起作用:
function test() {
eval("var myVariable = 5");
var locals = {};
locals.myVariable = myVariable; // TODO What should we do here?
alert(locals["myVariable"]); // returns myVariable
}
但你无法确定在eval()调用中声明了哪些变量(如果这是你想要的)
答案 1 :(得分:1)
function test() {
eval("var locals = {myVariable: 5};");
alert(locals["myVariable"]);
}
适合我。 eval()
不会创建新范围。
答案 2 :(得分:1)
简单如下:
eval("var myVariable = 5");
//no magic is needed
alert(myVariable); // returns myVariable