JavaScript - 函数不修改全局变量

标签 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!");
      }
    }

游戏的工作原理是每个功能(定义为游戏中的 Action 或区域)将由 JavaScript 放置的按钮和表单调用,用户可以分别单击或写入。我需要 refreshStats() 来更新 health 和 exp 变量,以便 foo() 可以正确使用它们;该函数似乎在 foo() 运行之后才更新变量。我确实想知道这是否是浏览器兼容性问题,这真的会让我失望,但我希望不是那样。

有什么建议吗?

最佳答案

将您的值存储到您的窗口对象中,因此它将在该窗口的任何范围内可用:

//take care to not overwrite native properties of the window
window.health = 100;
window.exp = 0;

function refreshStats() {
  health -= 10;
  exp += 1;
}

关于JavaScript - 函数不修改全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7291352/

相关文章:

javascript - HTML 中带有 float 字母表的词汇表

javascript - Jquery 不绑定(bind)事件 onload

php - 类函数中声明的全局在包含文件中不可用?

c# - c#.net 中的全局变量

javascript - 在 javascript 中使用 substr

javascript - 如何模糊滚动上的图像?

javascript - 在 ReactJS 中使用多种布局的正确方法是什么

javascript - 使用 PHP 的 Google 云消息传递 (GCM)

java - 如何在两个不同的方法中使用相同的变量而不将这些变量设为全局变量?

php - 更改函数 php 内的全局变量引用