Получение ссылок на локальные переменные, созданные во время eval () в JavaScript - PullRequest
2 голосов
/ 16 июня 2010

В сценарии ниже, как я могу получить ссылки на переменные, объявленные во время eval (), если я не знаю их имен?

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

Просто примечание: оцениваемый JavaScript получен из надежного источника.

Ответы [ 3 ]

2 голосов
/ 16 июня 2010

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 голос
/ 16 июня 2010

Простой как:

eval("var myVariable = 5");
//no magic is needed
alert(myVariable); // returns myVariable
1 голос
/ 16 июня 2010
function test() {
  eval("var locals = {myVariable: 5};");
  alert(locals["myVariable"]);
}

у меня работает.eval() не создает новую область.

...