#javascript #function #typeerror
#javascript #функция #ошибка типа
Вопрос:
Ребята, я работаю над школьным проектом (на 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;
};
Переменная weapon:
var myWeapon = "Spike Sword";
А переменная myDamage равна:
var myDamage = 10;
Кто-нибудь знает, почему я получаю эту ошибку и / или как ее решить?
Если вам нужна дополнительная информация, спросите меня о чем угодно, и я постараюсь ответить на нее как можно лучше.
Комментарии:
1. из какой строки он исходит 🙂 ?
2. var damage = myDamage(myWeapon);
Ответ №1:
Потому myWeapon
Spike Sword
что, вы делаете это:
case "Spike Sword":
myDamage = 10;
break;
Однако myDamage()
это функция, а не число, поэтому это не имеет смысла для консоли JavaScript! Вместо этого он превращается myDamage
в строку, а затем помещается "10"
в конец строки.
Теперь myDamage
это строка. Однако в damageFormula()
, вы вызываете myDamage
как функцию. Таким образом, TypeError
может быть выброшен, хотя для меня,
Я предлагаю делать var damage = 0;
и делать damage = 10;
, damage = 20;
, и т.д..
Комментарии:
1. Большое спасибо! Это то, что я искал!
Ответ №2:
Будьте осторожны с вашими именами — вы используете myDamage
как имя для функции, так и имя для переменной! Это создаст несогласованное состояние в вашем коде.
Вероятно, вы используете var myDamage
где-то еще, делая его нулевым в области видимости.
Комментарии:
1. Спасибо за помощь! Я часами задавался вопросом, почему мой код не работает :/