-1

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

更新:哦,代码!

Upd2:通过使用各种方式声明 var 我仍然得到 NaN 和 undefined ,同时用 8+9 输出测试它。使用 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();
4

1 回答 1

0

您提供的内容几乎可以正常工作:函数 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 有疑问,那么它应该是其他问题。

于 2013-11-04T21:57:34.780 回答