什么是?:(问号和冒号运算符。条件或“三元”)操作符,我如何使用它?
当前回答
这可能不是最优雅的方式。但是对于不熟悉三元运算符的人来说,这可能是有用的。我个人倾向于使用一行程序回退,而不是使用条件块。
// 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或未设置,则继续执行下一个。
利用三元运算符,编写程序打印偶数,如果数字是偶数,打印奇数,如果数字是奇数。
设a = 13; 令b = a%2!= = 0 ?“是奇数”:“是偶数”; // let b = a%2==0 ?“是偶数”:“是奇数”; console.log (a + " " +);
输出:13为奇数
它被称为“三元”或“条件”操作符。
例子
?:操作符可以用作 if的快捷方式…else语句。 它通常用作 更大的表达式,其中if…else 声明会很尴尬。为 例子:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
这个例子创建了一个字符串 上面写着"晚上好 下午6点之后。使用的等效代码 一个如果…Else语句看起来像 如下:
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
来自MSDN JS文档。
基本上这是一个简写的条件语句。
还看到:
Javascript三元运算符的运算符优先级 维基百科
这可能不是最优雅的方式。但是对于不熟悉三元运算符的人来说,这可能是有用的。我个人倾向于使用一行程序回退,而不是使用条件块。
// 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);
三元运算符
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";