Недавно я узнал о тернарном операторе и о том, как это хороший ярлык вместо использования оператора if/else.
Я тренируюсь, и это программа, которая настраивает, к какой школе должна идти кто-то, исходя из своего возраста.
Однако, когда я запускаю код, он не работает.
var age = 15;
function whichSchool(age) {
return (age < 13) ? "Elementary School"
: (age >= 13 && age <= 18) ? "Secondary School"
: (age > 18) ? "University"
}
console.log(whichSchool(15))
В нем говорится: неожиданный токен {.
Любая помощь приветствуется.
Спасибо.
Тройной синтаксис conditional? true: false
conditional? true: false
. Вы объединен мультипликатор, if
условные триады здесь, хотя и не логика, если ни один из условных не будут выполнены. Чтобы исправить это, добавьте резервное поведение : false
после окончательного условного:
var age = 15;
function whichSchool(age) {
return (age < 13) ? "Elementary School"
: (age >= 13 && age <= 18) ? "Secondary School"
: (age > 18) ? "University"
: "None"
}
console.log(whichSchool(15))
Обратите внимание, что эта false
логика никогда не будет выполняться, хотя с комбинацией условных выражений выше (кто-то находится под 13, между 13 и 18 или более 18), и вам будет лучше просто иметь : "University"
в качестве значения по умолчанию в этот пример:
var age = 15;
function whichSchool(age) {
return (age < 13) ? "Elementary School"
: (age >= 13 && age <= 18) ? "Secondary School"
: "University"
}
console.log(whichSchool(15))
return age < 13 ? "Elementary School" : age > 18 ? "University" : "Secondary School";
- Я имею в виду, что вы соединяете троицы, так что код все равно не читается, так что зачем сохранять произвольный порядок - проверять <13 затем> 18 не вредно, а все остальное должно быть между двумя: p
?
в конце без соответствующего:
Вам нужны оба для троичного оператора.(age > 18) ?
часть, это ожидает «еще» последней троичной, которого там нет.