你如何使用? :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检查是否true
是true
或false
。
如果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>"