三元运算符中的多项操作

Multiple operations in ternary operator

是否可以在三元运算符的 if/else 中进行多个操作?

我在下面想出了一个例子,可能不是最好的例子,但我希望你明白我的意思。

var totalCount = 0;
var oddCount = 0;
var evenCount = 0;
for(var i = 0; i < arr.length; i++) {
  if(arr[i] % 2 === 0) {
    evenCount ++;
    totalCount ++;
  } else {
    oddCount ++;
    totalCount ++;
  }
}

变成类似这样的东西:

var totalCount = 0;
var oddCount = 0;
var evenCount = 0;
for(var i = 0; i < arr.length; i++) {
  arr[i] % 2 === 0? evenCount ++ totalCount ++ : oddCount ++ totalCount ++;
  }
}

您可以使用 comma operator 来执行多个表达式来代替单个表达式:

arr[i] % 2 === 0? (evenCount++, totalCount++) : (oddCount++, totalCount++);

逗号运算符的结果是最后一个表达式的结果。

但是,是的,不要使用条件运算符来产生副作用。