在JavaScript中获取对eval()期间创建的局部变量的引用

时间:2010-06-16 14:26:28

标签: javascript eval

在下面的场景中,如果我不知道他们的名字,我怎样才能获得对eval()期间声明的变量的引用?

function test() {
  eval("var myVariable = 5");
  var locals = magic() // TODO What should we do here?
  alert(locals["myVariable"]); // returns myVariable
}

请注意:正在评估的JavaScript来自可靠的来源。

3 个答案:

答案 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