【问题标题】: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 答案后编辑问题。

【问题讨论】:

    标签: javascript function global-variables overriding


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 是的..但这不会每次都奏效。想象一下上面的整个代码都在另一个函数中的情况。然后 window.x 将无法工作。我也会面临同样的问题。
      • 那么这将取决于具体情况,但是,我建议养成更清楚地命名变量的习惯。将多个变量命名为同一事物(尤其是单个字符)会让人非常困惑。
      • 感谢 abeisgreat。但这个问题只是出于好奇。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      相关资源
      最近更新 更多