Я пытаюсь написать простой оператор сравнения для нескольких аргументов функции, и он обходит ошибку. tbh, я даже не уверен, что могу сравнивать эти аргументы.
Я попытался добавить вложенный if, чтобы извлечь ошибку, и он возвращает неизвестное исключение. (раскомментируйте вложенное, чтобы увидеть поведение)
var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
if ((par || strokes) <= 0) {
/*if (par) {
return "Please enter a value greater than " + par + " for Par";
}
else if (strokes) { */
return "Please enter a value greater than " + strokes + " for Strokes";
}
else if (strokes == 1) {
return names[0];
}
else if (strokes <= (par - 2)) {
return names[1];
}
else if (strokes == (par - 1)) {
return names[2];
}
else if (strokes == (par)) {
return names[3];
}
else if (strokes == (par + 1)) {
return names[4];
}
else if (strokes == (par + 2)) {
return names[5];
}
return names[6];
}
// Change these values to test
console.info(golfScore(0,1));console.info(golfScore(5,4));



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


((par || strokes) <= 0)
|| заставляет его оценить, не является ли par или stroke "ложным" типом данных (false, null, undefined). По сути, вы пытаетесь сравнить логическое значение с числом. Вместо этого вы должны сравнить каждую из ваших переменных с 0
(par <= 0 || strokes <= 0)
Если вы удалите комментарии, вам будет не хватать скобки, чтобы закрыть вложенный оператор if.