你如何使用 ?:(条件)JavaScript中的运算符?

2022-08-29 23:07:00

简单来说,什么是(条件的“三元”)运算符,我如何使用它??:


答案 1

这是 if-else 语句的单行简写。它称为条件运算符。1 个

下面是一个可以使用条件运算符缩短的代码示例:

var userType;
if (userIsYoungerThan18) {
  userType = "Minor";
} else {
  userType = "Adult";
}

if (userIsYoungerThan21) {
  serveDrink("Grape Juice");
} else {
  serveDrink("Wine");
}

这可以通过以下方式缩短:?:

var userType = userIsYoungerThan18 ? "Minor" : "Adult";

serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

像所有表达式一样,条件运算符也可以用作具有副作用的独立语句,尽管这在缩小之外是不寻常的

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

它们甚至可以被链接起来:

serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');

但是要小心,否则你最终会得到像这样的复杂代码:

var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;

1通常被称为“三元算子”,但实际上它只是一个三元算子[接受三个操作数的算子]。不过,它是JavaScript目前唯一拥有的。


答案 2

我想在给定的答案中添加一些。

如果你在“如果变量已设置,则显示变量,否则......”等情况下遇到(或想要使用)三元,则可以使其更短,而无需三元


而不是:

var welcomeMessage  = 'Hello ' + (username ? username : 'guest');

您可以使用:

var welcomeMessage  = 'Hello ' + (username || 'guest');

这是 Javascript 等同于 PHP 的速记三元运算符

甚至:

var welcomeMessage  = 'Hello ' + (username || something || maybethis || 'guest');

它计算变量,如果变量为 false 或未设置,则继续执行下一个变量。