2013-04-05 104 views
4

我想在函数内部被同一个命名变量覆盖时访问全局变量'x'。在函数内部访问被重写的全局变量

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

    overRideX(); 
} 

outer(); 

Jsbin:Fiddle to Test

我不想内部变量 'x' 重命名为别的东西。 这可能吗?

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

回答

2

您可以使用window.x引用全局作用域变量。

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

overRideX(); 

此代码日志“更新”,然后10

+0

是的..但那不会每次都有效。想象一下上面的代码在另一个函数中的情况。然后window.x将不起作用。我将面临同样的问题。 – sachinjain024 2013-04-05 05:46:54

+0

然后,它将取决于具体情况,但是,我建议养成更清楚地命名变量的习惯。有多个名称相同的变量(特别是单个字符)变得非常混乱。 – 2013-04-05 05:48:26

+1

感谢abeisgreat。但这个问题只是出于好奇。 – sachinjain024 2013-04-05 05:52:42

1

你的网页的全局作用域是window。因此可以通过window对象访问全局范围中定义的每个变量。

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