Ошибка не в том, что вы использовали троичный оператор.
В сообщении говорится, что JavaScript не может найти функцию с именем "winBattle ()" в любом месте вашего кода - или, по крайней мере, вне текущего scope .
Как мы увидим в этой демонстрации, если вы объявляете такую функцию и заставляете ее возвращать простое логическое «истинное» значение (только для примера), то ошибка приводит кне происходит:
var experiencePoints = winBattle() ? 10 : 1;
console.log(experiencePoints);
function winBattle()
{
//I assume here you would have some logic to calculate the winner of the battle, and then return true or false depending on who won.
return true;
}
Вам нужно будет проверить оставшуюся часть кода и либо
a) создать функцию, если она не существует
или
b) сделать его доступным из области, в которой вы его вызываете.Если вам нужна помощь в выполнении этой задачи, вам придется показать нам оставшуюся часть кода.
Вот некоторая справочная информация:
Я думаю, что вы, возможно, ошиблись undefined
you 'мы видим результат выполнения функции «ExperiencePoints».Это не.Это просто результат создания этой функции через консоль.Консоль всегда показывает результат только что созданной строки, которая в данном случае ничего не значит, потому что вы просто объявляете функцию, а не запускаете ничего, что производит вывод.Если вы включите эту функцию на веб-странице, вы не увидите такого сообщения.Вы никогда не запускали эту функцию.Если бы вы это сделали (написав experiencePoints();
), вы почти наверняка бы увидели ту же ошибку, касающуюся winBattle (), поскольку во время запуска функции winBattle () не существует.
Разница между этими ваш троичный код оператора состоит в том, что эта строка кода не находится внутри функции и поэтому выполняется немедленно.