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

发布于 2024-09-05 18:02:52 字数 274 浏览 4 评论 0原文

在下面的场景中,如果我不知道变量的名称,如何获取对 eval() 期间声明的变量的引用?

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

请注意:正在评估的 JavaScript 来自受信任的来源。

In the scenario below, how can I get references to the variables declared during eval() if I do not know their names?

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

Just a note: JavaScript being evaluated comes from a trusted source.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

背叛残局 2024-09-12 18:02:52

eval() 在与调用者相同的范围内运行,因此这将起作用:

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

但是您无法确定在 eval() 调用中声明了哪些变量(如果这就是您想要的)

eval() runs in the same scope as the caller, so this will work:

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

But you can't determine what variables were declared in the eval() call (if that's what you want)

素罗衫 2024-09-12 18:02:52
function test() {
  eval("var locals = {myVariable: 5};");
  alert(locals["myVariable"]);
}

对我有用。 eval() 不会创建新的作用域。

function test() {
  eval("var locals = {myVariable: 5};");
  alert(locals["myVariable"]);
}

works for me. eval() does not create a new scope.

给我一枪 2024-09-12 18:02:52

简单如下:

eval("var myVariable = 5");
//no magic is needed
alert(myVariable); // returns myVariable

Simple as :

eval("var myVariable = 5");
//no magic is needed
alert(myVariable); // returns myVariable
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文