访问函数内覆盖的全局变量

Posted

技术标签:

【中文标题】访问函数内覆盖的全局变量【英文标题】:Access overridden global variable inside a function 【发布时间】:2013-03-27 10:40:38 【问题描述】:

当全局变量“x”被函数内的同名变量覆盖时,我想访问它。

function outer() 
   var x = 10;
   function overRideX() 
      var x = "Updated";
      console.log(x);
   ;

  overRideX();


outer();

Jsbin:Fiddle to Test

我不想将内部的“x”变量重命名为其他名称。 这可能吗?

编辑:在 abeisgreat 答案后编辑问题。

【问题讨论】:

【参考方案1】:

您可以使用 window.x 来引用全局范围的变量。

var x = 10;
function overRideX() 
  var x = "Updated";
  console.log(x);
  console.log(window.x);
;

overRideX();

此代码记录“更新”然后 10。

【讨论】:

是的..但这不会每次都奏效。想象一下上面的整个代码都在另一个函数中的情况。然后 window.x 将无法工作。我也会面临同样的问题。 那么这将取决于具体情况,但是,我建议养成更清楚地命名变量的习惯。将多个变量命名为同一事物(尤其是单个字符)会让人非常困惑。 感谢 abeisgreat。但这个问题只是出于好奇。【参考方案2】:

您网页的全局范围是window。因此,可以通过window 对象访问全局范围内定义的每个变量。

var x = 10;
function overRideX() 
    var x = "Updated";
    console.log(x + ' ' + window.x);
();

【讨论】:

以上是关于访问函数内覆盖的全局变量的主要内容,如果未能解决你的问题,请参考以下文章

19.8.9(全局变量和局部变量的作用域)

全局变量与参数

访问全局函数内的环境变量 - SwiftUI + CoreData

php中在局部作用域内访问全局变量

Python全局变量和局部变量

全局变量和局部变量的区别