什么是?:(问号和冒号运算符。条件或“三元”)操作符,我如何使用它?
当前回答
(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>"
其他回答
大部分答案都是正确的,但我想再补充一点。三元操作符是右结合的,这意味着它可以以以下方式链接,如果…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; }
}
详情请点击这里
这是一行中的if语句。
So
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
要计算的表达式在()中。
如果匹配为true,则执行?
如果匹配为false,执行下面的代码:
它叫做三元算符
tmp = (foo==1 ? true : false);
这可能不是最优雅的方式。但是对于不熟悉三元运算符的人来说,这可能是有用的。我个人倾向于使用一行程序回退,而不是使用条件块。
// 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);
三元运算符
我想在已经给出的答案上加上一些。
如果你遇到(或想要使用)三元的情况,如'显示一个变量,如果它被设置,否则…',你可以让它更短,没有三元。
而不是:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
你可以使用:
var welcomeMessage = 'Hello ' + (username || 'guest');
这是javascript相当于PHP的速记三元操作符?:
甚至:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
它对变量求值,如果它为false或未设置,则继续执行下一个。