?:
(问号和冒号运算符,又称条件或“三元”)运算符,我该如何使用它?< /p >?:
(问号和冒号运算符,又称条件或“三元”)运算符,我该如何使用它?< /p >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中,这是唯一的三元运算符。
ternary
是运算符的类型(即它有3个部分)。那个特定的三元运算符的名字是 conditional operator
。在JS中只有一个三元运算符,因此这些术语被误用。 - iCollect.it Ltd||
运算符来实现,因为如果左侧的值为真值,则会短路。 - Peter Olson我想要添加一些内容到给定的答案中。
如果你遇到(或想要使用)三目运算符来处理“如果变量设置了就显示,否则...”这样的情况,你可以让它更短,不需要三目运算符。
改为:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
您可以使用:
var welcomeMessage = 'Hello ' + (username || 'guest');
< p > < em > 这是 JavaScript 对 PHP 的简写三元运算符< code >?:的等价项
甚至可以这样说:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
它评估变量,如果为假或未设置,则继续执行下一个操作。
'Hello ' + (username ? username : 'guest')
中不使用三元运算符周围的大括号,而是忽略 Hello +
并返回三元操作的结果。有人能解释一下为什么吗? - Shiva'Hello ' + username
,这始终为true
,因为它是一个长度大于0的字符串。 - Jeffrey Roosendaal它被称为“三元”或“条件”运算符。
例子
?: 运算符可以作为 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条件运算符”进行搜索。
如果您在 JavaScript 中看到更多有趣的符号,应该首先尝试查找 JavaScript 的运算符: Mozilla 开发者中心的运算符列表。唯一可能遇到的例外是 $
符号。
回答你的问题,条件运算符 可以替代简单的 if 语句。最好通过一个示例来说明:
var insurancePremium = age > 21 ? 100 : 200;
改为:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
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; }
}
更多细节请点击这里
z = (x == y ? 1 : 2);
等同于
if (x == y)
z = 1;
else
z = 2;
嘿,朋友,请记住js通过评估为true或false来工作,对吧?
让我们看一下三元运算符:
questionAnswered ? "Awesome!" : "damn" ;
首先,js检查questionAnswered是true
还是false
。
如果是 true
(?
)你会得到“太棒了!”
否则(:
)你会得到“糟糕”;
希望这能帮助到你的朋友 :)
三元运算符
在JavaScript中,我们通常使用条件语句。
例如:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
但它包含两行或多行文本,不能分配给变量。Javascript有一个解决方案三元操作符。三元操作符可以在一行中编写并分配给一个变量。
例子:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
tmp = (foo==1 ? true : false);
三元表达式在JS中非常有用,特别是在React中。以下是对提供的许多好的详细答案的简化回答。
condition ? expressionIfTrue : expressionIfFalse
把expressionIfTrue
看作是if语句中的真值;
把expressionIfFalse
看作是else语句。
例如:
var x = 1;
(x == 1) ? y=x : y=z;
这个语句检查了变量 x 的值,如果为真,则返回第一个 y=(value),如果为假,则在冒号后返回第二个 y=(value)。
y = (x == 1) ? x : z
。 - konsumer
?:
(与你所写的一样,两边没有语句)——Elvis运算符。相当聪明。 - Rob Hruska