另一个:未定义的typeerror undefined不是一个函数

时间:2014-06-20 22:21:49

标签: javascript function uncaught-typeerror

K伙计我正在学校的一个项目(用javascript),我正在建造一个地下城。很可能不是你见过的最好的代码,但是呃,我在学校就读。

我收到了错误:

function damageFormula()
{
    var damage = myDamage(myWeapon); // I get the error on this function
    var doDamage = Math.floor(0.085 * damage * myAttackLvl + (myLevelLvl/5) - (1+15*Math.random()));

    return doDamage;
};

myDamage功能:

function myDamage(myWeapon)
{
    switch(myWeapon)
    {
        case "Spike Sword":
            myDamage += 10;
            break;
        case "Magic Long Sword":
            myDamage += 20;
            break;
        default:
            myDamage += 3;
            break;
    }
    return myDamage;
};

武器变量是:

var myWeapon    = "Spike Sword";

myDamage变量是:

var myDamage    = 10;

有谁知道我为什么会收到这个错误和/或如何解决它?

如果您需要更多信息,请向我询问,我会尝试尽可能好地回答。

2 个答案:

答案 0 :(得分:0)

因为myWeaponSpike Sword,所以你这样做了:

case "Spike Sword":
        myDamage += 10;
        break;

但是,myDamage()是一个函数,而不是一个数字,所以这对JavaScript控制台没有意义!相反,它将myDamage转换为字符串,然后将"10"放在字符串的末尾。

现在,myDamage是一个字符串。但是,在damageFormula()中,您将myDamage称为函数。因此,虽然对我来说可能会抛出TypeError

我建议您var damage = 0;并执行damage += 10;damage += 20;等。

答案 1 :(得分:0)

警惕您的名字 - 您同时使用myDamage作为函数的名称作为变量的名称!这将在您的代码中创建不一致的状态。

你可能在其他地方使用var myDamage,在范围内使其为空。