簡體   English   中英

JavaScript-函數未修改全局變量

[英]JavaScript - Function Not Modifying Global Variable

我在用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()運行之后,該函數似乎才更新變量。 我確實想知道這是否是瀏覽器兼容性問題,確實會打擾我,但我希望不是那樣。

有什么建議么?

將值存儲到窗口對象中,因此它將在該窗口的任何范圍內可用:

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

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

似乎對我有用 也許這是一個范圍問題-您可以發布實際的相關代碼,而不是示例代碼嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM