如何访问父函数的局部变量?

时间:2013-07-21 23:20:46

标签: javascript scope dynamic-variables

让我说我有这个功能

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

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

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

我猜我在问题上也需要同样的方法,但我不知道用什么对象作为父对象。

1 个答案:

答案 0 :(得分:-1)

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

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

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

提醒:

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