更改变量超出范围?

Mat*_*rym 5 javascript variables scope

有什么方法可以在超出范围的情况下更改变量?我通常知道您不能,但是我想知道是否有任何技巧或替代。例如,有什么方法可以使以下工作:

function blah(){
 var a = 1
}
a = 2;
alert(blah());
Run Code Online (Sandbox Code Playgroud)

编辑(为澄清):

假设的情况是修改setInterval函数中使用的变量,该函数也超出范围,并且不能在以前的javascript文件中使用。这是一个非常古怪的场景,但这是我要询问的场景。

Ply*_*ynx 4

不,没有技巧或覆盖。您必须计划让两个地方都能够在同一范围内看到该变量。

我能想到的关于范围的唯一技巧是window在浏览器中使用来访问全局对象。这可以帮助您获取“隐藏”变量——该变量在作用域内,但其名称已被局部变量(或作用域链中更接近的其他变量)取代。

闭包和类可以为您提供一些其他有关范围的技巧,但没有一个可以让您完全覆盖范围规则。