JavaScript-函数不修改全局变量

JavaScript-函数不修改全局变量,javascript,global-variables,Javascript,Global Variables,我在用JavaScript编写文本冒险游戏代码时,在修改一个变量时遇到了问题。我想使用函数中的函数(不,不是闭包)更改全局变量的值 /*这只是示例代码*/ var健康=100; var-exp=0; 函数refreshtstats(){ 健康-=10; exp+=1; } 函数foo(标志){ 如果(标志==DONOTHING){ refreshStats(); } 如果(运行状况)看起来像。也许这是一个范围问题-您可以发布实际的相关代码而不是示例代码吗?将您的值存储到窗口对象中,以便在该窗口的

我在用JavaScript编写文本冒险游戏代码时,在修改一个变量时遇到了问题。我想使用函数中的函数(不,不是闭包)更改全局变量的值

/*这只是示例代码*/
var健康=100;
var-exp=0;
函数refreshtstats(){
健康-=10;
exp+=1;
}
函数foo(标志){
如果(标志==DONOTHING){
refreshStats();
}

如果(运行状况)看起来像。也许这是一个范围问题-您可以发布实际的相关代码而不是示例代码吗?

将您的值存储到窗口对象中,以便在该窗口的任何范围内都可用:

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

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

更多的注释,即使是相关的。您的代码缺少if-else语句,这些语句获取变量的值以决定您是否死亡。函数(如alert()和方法(如log())将按应有的方式显示变量,但不显示if else语句。@zero这没有任何意义。.变量在任何时间点的值都是相同的,无论它是
alert()
ed还是在条件中求值。发布一些真实代码,因为发生了其他事情。最佳猜测。您的“全局”变量实际上不是在全局范围内定义的,因此不同的代码段正在修改变量的不同范围副本。但是,如果看不到真实的代码及其周围的上下文,就无法知道这一点。DONOTHING是一个变量,还是应该是字符串“DONOTHING”?DONOTHING是一个类似于标志的变量,但我没有在示例代码中定义它。我知道它在这些情况下不起作用,但我更关心的是全局变量,而不是标志(实际代码中的标志是正确定义的)。
//take care to not overwrite native properties of the window
window.health = 100;
window.exp = 0;

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