Использование троичного оператора вместо if / else?

1

Недавно я узнал о тернарном операторе и о том, как это хороший ярлык вместо использования оператора 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))

В нем говорится: неожиданный токен {.

Любая помощь приветствуется.

Спасибо.

  • 4
    У вас есть дополнительный ? в конце без соответствующего : Вам нужны оба для троичного оператора.
  • 0
    Удалить (age > 18) ? часть, это ожидает «еще» последней троичной, которого там нет.
Показать ещё 3 комментария
Теги:
ternary-operator

1 ответ

2
Лучший ответ

Тройной синтаксис 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))
  • 0
    Потому что это необходимо для правильной проверки. В качестве альтернативы вы можете изменить последнюю строку просто на `:" University ", и я обновлю ответ, чтобы упомянуть об этом :)
  • 1
    Чтобы сделать код более кратким, я бы return age < 13 ? "Elementary School" : age > 18 ? "University" : "Secondary School"; - Я имею в виду, что вы соединяете троицы, так что код все равно не читается, так что зачем сохранять произвольный порядок - проверять <13 затем> 18 не вредно, а все остальное должно быть между двумя: p

Ещё вопросы

Сообщество Overcoder
Наверх
Меню