我在修改文本冒险游戏中的变量时遇到了麻烦,我正在用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()运行之后,该函数似乎才更新变量。我不知道这是否是一个浏览器兼容性问题,这真的会打扰我,但我希望它不是那样。
有什么建议吗?
答案 0 :(得分:2)
将您的值存储到您的窗口对象中,因此它将在该窗口的任何范围内可用:
//take care to not overwrite native properties of the window
window.health = 100;
window.exp = 0;
function refreshStats() {
health -= 10;
exp += 1;
}
答案 1 :(得分:1)
看起来像it's working for me。也许这是一个范围问题 - 而不是示例代码,您可以发布您的实际相关代码吗?