【问题标题】:Another: uncaught typeerror undefined is not a function另:uncaught typeerror undefined is not a function
【发布时间】:2014-06-21 06:28:57
【问题描述】:

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;

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

如果您需要更多信息,请随时问我,我会尽力回答。

【问题讨论】:

  • 它来自哪一行:)?
  • var 伤害 = myDamage(myWeapon);

标签: javascript function typeerror


【解决方案1】:

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

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

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

现在,myDamage 是一个字符串。但是,在damageFormula() 中,您将myDamage 作为函数调用。因此,TypeError 可能会被抛出,尽管对我来说,

我建议做var damage = 0;和做damage += 10;damage += 20;等。

【讨论】:

  • 非常感谢!这就是我要找的东西!
【解决方案2】:

注意你的名字——你使用myDamage作为一个函数的名字作为一个变量的名字!这将在您的代码中创建不一致的状态。

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

【讨论】:

  • 感谢您的帮助!我想知道几个小时为什么我的代码不起作用:/
猜你喜欢
  • 1970-01-01
  • 2014-08-15
  • 2015-01-14
  • 2014-07-06
  • 2014-09-01
  • 2015-11-04
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多