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

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

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

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

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

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

 userIsYoungerThan21 ? serveGrapeJuice() : serveWine(); 

在JavaScript条件运算符可以评估一个expression式,而不仅仅是一个声明:

 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。

我想添加一些给出的答案。

如果遇到(或者想要使用)一个三元的情况,比如'显示一个variables,如果已经设置,否则…',可以使它更短, 没有三元


代替:

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

您可以使用:

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

这是PHP的速记三元运算符的Javascripts equirelent ?:

甚至:

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

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

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

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

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

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

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

从MSDN JS文档 。

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

另请参阅:

  • 运算符优先与Javascript三元运算符
  • 维基百科

当你所有的符号都是谷歌有点困难;)使用条款是“JavaScript条件运算符”。

如果您在Javascript中看到更多有趣的符号,您应该首先查找JavaScript的运算符: MDC的运算符列表 。 你可能遇到的一个例外是$符号 。

为了回答你的问题, 有条件的操作符取代简单的if语句 一个例子是最好的:

 var insurancePremium = age > 21 ? 100 : 200; 

代替:

 var insurancePremium; if (age > 21) { insurancePremium = 100; } else { insurancePremium = 200; } 
 z = (x == y ? 1 : 2); 

相当于

 if (x == y) z = 1; else z = 2; 

当然,除了它更短。

它被称为三元运算符

 tmp = (foo==1 ? true : false); 

三元运算符

通常我们在Javascript中有条件语句。

例:

 if (true) { console.log(1) } else { console.log(0) } # Answer # 1 

但它包含两个或更多的行,不能分配给一个variables。 JavaScript有这个问题三元运算符的解决scheme。 三元运算符可以写入一行并分配给一个variables。

例:

 var operator = true ? 1 : 0 console.log(operator) # Answer # 1 

这三元运算符类似于C编程语言。

嘿伙计只记得js通过评估是真的还是假的,对吧?

让我们拿一个三元运算符:

 questionAnswered ? "Awesome!" : "damn" ; 

首先,js检查是否truetruefalse

如果true? ),你会得到“真棒!”

否则(:)你会得到“该死的”;

希望这有助于朋友:)

它被称为ternary operator 。 有关更多信息,这里是我回答的另一个问题:

如何编写一个没有“else”的IF else语句

这是一个if statement都在一行。

所以

 var x=1; (x == 1) ? y="true" : y="false"; alert(y); 

要评估的expression式是在( )

如果匹配成功,执行代码后?

如果它匹配false,则执行以下代码:

ternary operator也可以只用于一个条件。 从我的angular应用程序的例子:

 ng-class="{'row-checked': payment.show}" 
  (sunday == 'True') ? sun="<span class='label label-success'>S</span>" : sun="<span class='label label-danger'>S</span>"; sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"