JavaScript - функция не изменяет глобальную переменную - PullRequest
1 голос
/ 03 сентября 2011

У меня проблемы с изменением переменной в текстовой приключенческой игре, для которой я пишу код на 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 ]

2 голосов
/ 03 сентября 2011

Сохраните ваши значения в вашем объекте окна, чтобы он был доступен в любой области этого окна:

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

function refreshStats() {
  health -= 10;
  exp += 1;
}
1 голос
/ 03 сентября 2011

Похоже, это работает для меня . Возможно, это ограниченная проблема - вместо примера кода, вы могли бы опубликовать свой актуальный соответствующий код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...