Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问父函数';什么是局部变量?_Javascript_Scope_Dynamic Variables - Fatal编程技术网

Javascript 如何访问父函数';什么是局部变量?

Javascript 如何访问父函数';什么是局部变量?,javascript,scope,dynamic-variables,Javascript,Scope,Dynamic Variables,假设我有这个函数 var foo = function () { var bar = true; var inner = function () { alert(bar); }(); } 当我运行此程序时,一切正常,alert说“正确”。但是如果变量名是动态的,并且我必须从字符串中获取bar的值,该怎么办?如何访问父作用域以获取变量 示例:如果作用域是window,并且我们有一个包含动态变量名称的字符串,我将使用window[someString]获取该变量 我猜在我的

假设我有这个函数

var foo = function ()
{
  var bar = true;
  var inner = function ()
  {
    alert(bar);
  }();
}
当我运行此程序时,一切正常,alert说“正确”。但是如果变量名是动态的,并且我必须从字符串中获取bar的值,该怎么办?如何访问父作用域以获取变量

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


我猜在我的问题中也需要同样的方法,但我不知道使用哪个对象作为父对象。

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

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

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

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

我不认为你做不到这一点,使用对象似乎是正确的方法。此链接应该可以帮助你。为什么要投否决票?如果你不解释你认为错误的地方,那就无法改善答案。