对于背景,我目前正在播放 Untrusted ,一种基于 JavaScript 的编程游戏,其核心机制是编辑代码以修改游戏世界以向前推进。我通过使用记录的游戏内 API 修改我在本地范围内给出的变量,以“预期”的方式解决了大多数关卡。但是,我想知道是否还有一些“意想不到的”方法可以通过钓鱼来修改游戏状态/游戏定义。
很多游戏的代码如下(在window
范围内计算):
function foo() {
var bar = 1234;
}
我知道我可以通过引用 window.foo
从任何范围访问 foo
。有没有一种方法可以访问 foo
中的 bar
,即使它没有明确公开?
澄清一下,上面的代码已经为我评估了(我相信在 window
范围内,所以我至少可以获得对 foo
的引用)。我无法更改评估的内容。 (我想我可以重新定义 foo
如果我真的想要的话,那会绕过很多限制,但这与当前的提问方向无关。)相反,我的目标是,鉴于这已经是评估,就地修改它(例如为 bar
设置一个新值)。
提前致谢!
最佳答案
简短的回答是否。
不可能在其范围/闭包之外访问局部变量(请注意,由于闭包,可能有多个范围可以访问单个局部变量)。
对于长答案,请参阅此答案以了解范围如何工作:javascript can't access private properties .
关于javascript - 从外部访问闭包内定义的 var(即定义闭包的范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31779504/