什么是?:(问号和冒号运算符。条件或“三元”)操作符,我如何使用它?


当前回答

条件(三元)操作符是唯一的JavaScript操作符 这需要三个操作数。这个运算符经常被用作 if语句的快捷方式。

condition ? expr1 : expr2 

如果condition为真,运算符返回expr1的值; 否则,它返回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文档链接

其他回答

这可能不是最优雅的方式。但是对于不熟悉三元运算符的人来说,这可能是有用的。我个人倾向于使用一行程序回退,而不是使用条件块。

  // 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或未设置,则继续执行下一个。

三元运算符

Javascript中通常有条件语句。

例子:

if (true) {
    console.log(1)
} 
else {
    console.log(0)
}
# Answer
# 1

但它包含两行或多行,不能赋值给变量。 Javascript有一个解决这个问题的三元运算符。 三元操作符可以写在一行中并赋值给一个变量。

例子:

var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1

这个三元运算符类似于C编程语言。

它叫做三元算符。为了了解更多信息,我回答了另一个问题:

如何编写不带else的IF else语句

大部分答案都是正确的,但我想再补充一点。三元操作符是右结合的,这意味着它可以以以下方式链接,如果…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; }
}

详情请点击这里