访问函数内覆盖的全局变量
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);
();
【讨论】:
以上是关于访问函数内覆盖的全局变量的主要内容,如果未能解决你的问题,请参考以下文章