我在修改文本冒险游戏中的变量时遇到问题我在JavaScript中编写代码。我想使用函数内的函数(不,不是闭包)来更改全局变量的值。JavaScript - 函数不修改全局变量
/*This is just example code.*/
var health = 100;
var exp = 0;
function refreshStats() {
health -= 10;
exp += 1;
}
function foo(flag) {
if (flag == DONOTHING) {
refreshStats();
}
if (health <= 0) {
say("You died, bwahaha.");
}
if ((exp/10) == Math.floor(exp/10)) {
health += 10;
say("You leveled up!");
}
}
游戏如何工作原理是,每个功能(定义为游戏中的操作或地区)将由JavaScript的放置,用户可以通过点击或写入,分别按键和形式被调用。我需要refreshStats()来更新健康和exp变量,以便foo()可以正确使用它们;该函数似乎没有更新变量,直到foo()运行之后。我真的不知道这是否是一个浏览器兼容性问题,这真的会让我失望,但我希望不是这样。
有什么建议吗?
的最佳答案。您的“全局”变量实际上并未在全局范围内定义,因此不同的代码段正在修改变量的不同范围的副本。但是,如果没有看到真实的代码和周围的上下文,就无法知道这一点。 – jfriend00
DONOTHING变量,或者应该是字符串“DONOTHING”? – Paulpro
DONOTHING是一个标志性变量,但我没有在示例代码中对其进行定义。我知道在这种情况下它不起作用,但我更关心全局变量,而不是标志(实际代码中的标志被正确定义)。 – zeroslash