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

有人可以用简单的语言向我解释什么是?: (有条件的“三元”)操作符以及如何使用它?


这是一个if-else语句的单行速记。 它被称为条件操作符

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

if(userIsYoungerThan21) {
  serveGrapeJuice();
}
else {
  serveWine();
}

这可以用?:缩短?:就像这样:

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

在JavaScript中,条件运算符可以评估一个表达式,而不仅仅是一个语句:

var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

他们甚至可以链接在一起:

userIsYoungerThan4 ? serveMilk() : userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

不过要小心,否则你最终会得到如此复杂的代码:

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

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


我想补充一些给出的答案。

如果你遇到(或想要使用)三元组,如'显示一个变量,如果它已经设置,否则...',你可以使它更短,没有三元组。


代替:

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

您可以使用:

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

这是PHP的速记三元运算符的Javascript equivallent ?:

甚至:

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

它评估变量,如果它是错误的或未设置的,它会继续下一个。


它被称为'三元'或'条件'操作符。

?:操作符可以用作if ... else语句的快捷方式。 它通常用作更大表达式的一部分,其中if ... else语句会很尴尬。 例如:

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

该示例创建一个包含“晚上好”的字符串。 如果是在下午6点以后。 使用if ... else语句的等效代码如下所示:

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

从MSDN JS文档。

基本上它是一个简短的条件陈述。

另请参阅:

  • 运算符优先与Javascript三元运算符
  • 维基百科
  • 链接地址: http://www.djcxy.com/p/57973.html

    上一篇: How do you use the ? : (conditional) operator in JavaScript?

    下一篇: Is there a Python equivalent of the C# null