JavaScript - 函数不修改全局变量

时间:2011-09-03 05:29:28

标签: javascript global-variables

我在修改文本冒险游戏中的变量时遇到了麻烦,我正在用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()运行之后,该函数似乎才更新变量。我不知道这是否是一个浏览器兼容性问题,这真的会打扰我,但我希望它不是那样。

有什么建议吗?

2 个答案:

答案 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。也许这是一个范围问题 - 而不是示例代码,您可以发布您的实际相关代码吗?