【问题标题】:JS: calling variable from outside of functionJS:从函数外部调用变量
【发布时间】:2013-11-14 14:36:41
【问题描述】:

所以,我在函数之前输入变量,以便让它们随着每个函数调用而增长。 但是当我试图打印它们或在计算中使用它们时,JS 返回 NaN 或 undefined。从函数外部调用时,一切正常。 我错过了什么?

更新:哦,代码!

Upd2:通过使用各种方式声明 var,在使用 8+9 输出测试它时,我仍然得到 NaN 和 undefined。使用 window.GLD 和 GLD = 0 而不是 var GLD = 0;据我所知,我可以在没有 var 函数的情况下声明它,并且不会在这个函数之外影响它。但是我如何从函数外部拖动变量?

Upd3:尝试使用 var GLD=GLD+1(在函数内部声明)后,我仍然得到 NaN。所以最后一个问题:如何从外部将变量内容导入函数?

    var depth = 0;
    var maxHP = 10;
    var currentHP = 10;
    var DMG = 2;
    var ARM = 1;
    var GLD = 0;
    var currentExp = 0;
    var neededExp = 5;

    var GobHP = 2;
    var GobHPMax = 2;
    var CurrentGobHP=2
    var GobDMG = 1;
    var GobDEF = 0;
    var GobBSInc = 2;
    var GobexpInc = 2;
    var GobDmgDone = 1;

    var dmgDone=0;
    var wpnTier=0;

    var turn=1;

    var nextEvent=0;

    document.getElementById("statusChar").innerHTML="HP: "+currentHP+"/"+maxHP+" DMG: "+DMG+" ARM: "+ARM+" GLD: "+GLD+" EXP: "+currentExp+"/"+neededExp+" Depth: "+depth;
    //It's ok here - code dosent goes NaN or undefined
    function goDeeper()

     {      depth++;
        document.getElementById("statusChar").innerHTML="HP: "+currentHP+"/"+maxHP+" DMG: "+DMG+" ARM: "+ARM+" GLD: "+GLD+" EXP: "+currentExp+"/"+neededExp+" Depth: "+depth;
// and here it dies. Prompt to stop it from going to next step.
            prompt();

【问题讨论】:

  • 分享您尝试过的代码。
  • 在 Javascript 中你有全局变量和局部变量,谷歌在这两件事上。 :) 还有 - mattgemmell.com/2008/12/08/what-have-you-tried
  • 通过使用各种方式声明 var 我仍然得到 NaN 和 undefined ,同时用 8+9 输出测试它。使用 window.GLD 和 GLD = 0 而不是 var GLD = 0;据我所知,我可以在没有 var 函数的情况下声明它,并且不会在这个函数之外影响它。但是如何从函数外部拖动变量?
  • 您能否将问题隔离为几行代码,而不是复制整个源代码?
  • 如果我知道出了什么问题,我愿意。不过,我已经把它删掉了,我希望我没有错过一些重要的事情。

标签: javascript function nan


【解决方案1】:

您提供的内容几乎可以正常工作:函数 goDeeper() 没有结尾 }。这里的功能几乎没有变化:

function goDeeper()
{      
    depth++;
    document.getElementById("statusChar").innerHTML += "<br>HP: " + currentHP + "/" + maxHP + " DMG: " +DMG + " ARM: " + ARM + " GLD: " + GLD + " EXP: " + currentExp + "/" + neededExp + " Depth: " + depth;
    // prompt();
}

我刚刚将其更改为将每个输出都放在新行中。在多次调用 goDeeper() 之后,结果是:

HP: 10/10 DMG: 2 ARM: 1 GLD: 0 EXP: 0/5 Depth: 0
HP: 10/10 DMG: 2 ARM: 1 GLD: 0 EXP: 0/5 Depth: 1
HP: 10/10 DMG: 2 ARM: 1 GLD: 0 EXP: 0/5 Depth: 2
HP: 10/10 DMG: 2 ARM: 1 GLD: 0 EXP: 0/5 Depth: 3
HP: 10/10 DMG: 2 ARM: 1 GLD: 0 EXP: 0/5 Depth: 4

因此,如果您仍然对 undefined/NaN 有问题,那么它应该是其他问题。

【讨论】:

  • 嗨!谢谢。看起来这是一个正确的解决方案,但我已经通过从头开始重新创建 goDeeper 来完成它,也使它更容易并获得一些代码练习。我仍然很感激:3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多