有人可以用简单的词语向我解释什么是?:
(有条件的,“三元”)运算符以及如何使用它?
答案 0 :(得分:534)
这是if-else语句的单行速记。它被称为条件运算符。 1
以下是可以使用条件运算符缩短的代码示例:
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。
答案 1 :(得分:109)
我想添加一些给定的答案。
如果您遇到(或想要使用)三元组的情况,例如“显示变量(如果已设置,否则......)”,您可以缩短它,没有三元
而不是:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
您可以使用:
var welcomeMessage = 'Hello ' + (username || 'guest');
这是Javascripts等效的PHP的简写三元运算符?:
甚至:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
它评估变量,如果它是假的或未设置,它继续下一个。
答案 2 :(得分:25)
它被称为“三元”或“条件”运算符。
示例强>
?:运算符可以用作 if ... else语句的快捷方式。 它通常用作a的一部分 更大的表达式,其中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.";
基本上它是一种速记条件陈述。
另见:
答案 3 :(得分:18)
当你所拥有的只是符号时谷歌有点困难;)使用的术语是“javascript条件运算符”。
如果您在Javascript中看到更多有趣的符号,您应该首先尝试查找Javascript的运算符:MDC's list of operators。您可能遇到的一个例外是$
symbol。
要回答您的问题,条件运算符会替换简单的if语句。一个例子是最好的:
var insurancePremium = age > 21 ? 100 : 200;
而不是:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
答案 4 :(得分:8)
z = (x == y ? 1 : 2);
相当于
if (x == y)
z = 1;
else
z = 2;
当然,除了它更短。
答案 5 :(得分:6)
三元运营商
通常我们在Javascript中有条件语句。
示例:的
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
但它包含两行或更多行,无法分配给变量。 Javascript为此问题三元运算符提供了解决方案。 三元运算符可以在一行中写入并分配给变量。
示例:的
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
这个三元运算符在C编程语言中是相似的。
答案 6 :(得分:5)
它被称为三元运算符
tmp = (foo==1 ? true : false);
答案 7 :(得分:5)
嘿伙伴只记得js通过评估真或假来工作,对吧?
让我们选择三元运营商:
questionAnswered ? "Awesome!" : "damn" ;
首先,js会检查questionAnswered是true
还是false
。
如果true
(?
),您将获得"太棒了!"
否则(:
)你会得到"该死的&#34 ;;
希望这有助于朋友:)
答案 8 :(得分:3)
大多数答案是正确的,但我想补充一点。 三元运算符是右关联的,这意味着它可以通过以下if … else if … else if … else
方式被链接:
function example() {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
等同于:
function example() {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
更多详细信息为here
答案 9 :(得分:2)
一行if statement
。
所以
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
要评估的表达式位于( )
如果匹配为true,请执行?
如果匹配为false,请执行:
答案 10 :(得分:2)
x = 9
y = 8
一元
++x
--x
二进制
z = x + y
三元
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
答案 11 :(得分:1)
它被称为ternary operator
。有关更多信息,这是我回答的另一个问题:
答案 12 :(得分:1)
我们可以使用Jquery以及长度,如下例所示:
假设我们有一个具有值的GuarantorName文本框,并且想要获取名字和姓氏-它可能为null。 比
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = "";
var gFirstName = "";
if(gnamesplit.length > 0 ){
gLastName = gnamesplit[0];
}
if(gnamesplit.length > 1 ){
gFirstName = gnamesplit[1];
}
我们可以将以下代码与带有最少代码的Jquery一起使用
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = gnamesplit.length > 0 ? gnamesplit[0] : "";
var gFirstName = gnamesplit.length > 1 ? gnamesplit[1] : "";
$("#txtLastName").val(gLastName);
$("#txtFirstName").val(gFirstName);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
Guarantor Name: <input type="text" id="txtGuarantorName" value="ASP.NET Core" /><br/>
<br/>
<br/>
First Name: <input type="text" id="txtLastName" value="ASP.NET Core" />
Last Name: <input type="text" id="txtFirstName" value="ASP.NET Core" />
</div>
答案 13 :(得分:1)
这可能不是最优雅的方法。但是对于不熟悉三元运算符的人,这可能会有用。我个人的喜好是执行1线后备广告,而不是使用条件阻止广告。
// var firstName = 'John'; // Undefined
var lastName = 'Doe';
// if lastName or firstName is undefined, false, null or empty => fallback to empty string
lastName = lastName || '';
firstName = firstName || '';
var displayName = '';
// if lastName (or firstName) is undefined, false, null or empty
// displayName equals 'John' OR 'Doe'
// if lastName and firstName are not empty
// a space is inserted between the names
displayName = (!lastName || !firstName) ? firstName + lastName : firstName + ' ' + lastName;
// if display name is undefined, false, null or empty => fallback to 'Unnamed'
displayName = displayName || 'Unnamed';
console.log(displayName);
答案 14 :(得分:0)
如果您在 javascript 中具有一个条件检查实例功能。 三元运算符很容易使用。只需一行即可实施。 例如:
private module : string ='';
private page:boolean = false;
async mounted(){
if(this.module=== 'Main')
{
this.page = true;}
else{
this.page = false;
}
}
这样具有一个条件的函数可以写成如下。
this.page = this.module=== 'Main' ?true:false;
条件?如果为真:如果为假
答案 15 :(得分:0)
三元表达式在JS中非常有用,尤其是React。这是对所提供的许多优质详细信息的简化答案。
condition ? expressionIfTrue : expressionIfFalse
将expressionIfTrue
视为OG if陈述式为true;
将expressionIfFalse
视为else语句。
示例:
var x = 1;
(x == 1) ? y=x : y=z;
这将检查x的值,如果为true,则返回第一个y =(value),如果为false,则返回第二个冒号:返回y =(value)。
答案 16 :(得分:0)
条件(三元)运算符是唯一的JavaScript运算符 需要三个操作数。此运算符经常用作 if语句的快捷方式。
condition ? expr1 : expr2
如果条件为true,则运算符返回expr1的值;否则,返回0。 否则,它将返回expr2的值。
function fact(n) {
if (n > 1) {
return n * fact(n-1);
} else {
return 1;
}
// we can replace the above code in a single line of code as below
//return (n != 1) ? n * fact(n - 1) : 1;
}
console.log(fact(5));
有关更多说明,请阅读MDN document link
答案 17 :(得分:-3)
(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>"