【问题标题】:How to access parent function's local variables?如何访问父函数的局部变量?
【发布时间】:2013-07-21 23:20:45
【问题描述】:

假设我有这个功能

var foo = function ()
{
  var bar = true;
  var inner = function ()
  {
    alert(bar);
  }();
}

当我运行它时,一切都很好,警报说“真”。但是如果变量名是动态的并且我必须从字符串中获取 bar 的值怎么办?如何访问父作用域来获取变量?

示例:如果作用域是 window 并且我们有包含动态变量名称的字符串,我将使用 window[someString] 来获取该变量。

我猜我的问题也需要这种相同的方法,但我不知道将哪个对象用作父对象。

【问题讨论】:

标签: javascript scope dynamic-variables


【解决方案1】:

没有父对象,因为变量不是任何对象的属性。

您可以使用eval 函数从包含名称的字符串中获取变量的值。示例:

var foo = function ()
{
  var bar = true;
  var inner = function ()
  {
    var name = "bar";
    alert(eval(name));
  }();
}

注意事项:

  • eval 函数很慢,因为它每次都必须将字符串解析为代码。
  • eval 函数是危险的,因为它将执行字符串包含的任何内容。如果字符串可以包含其他用户可以控制的任何内容,它可能会打开您的站点以进行跨站点脚本。

【讨论】:

  • 为什么投反对票?如果你不解释你认为错误的地方,它就无法改进答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 2021-05-17
  • 2012-03-04
相关资源
最近更新 更多