使用三元运算符而不是 if/else?

Using the ternary operator instead of if/else?

我最近一直在学习三元运算符,它是一个很好的快捷方式,而不是使用 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。您在这里组合了多个 if 条件三元组,但没有满足条件的 if none 的逻辑。要更正此问题,请在最终条件后添加 : 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))

请注意,尽管结合上述条件(某人未满 13 岁、13 至 18 岁或超过 18 岁),但实际上永远不会满足此 false 逻辑,您最好直接在这种情况下将 : "University" 作为默认值:

var age = 15;

function whichSchool(age) {
  return (age < 13) ? "Elementary School"
       : (age >= 13 && age <= 18) ? "Secondary School"
       : "University"
}

console.log(whichSchool(15))