当三元测试大于 than/less 条件时,shorthand 是什么?

What is the shorthand when a ternary tests for greater than/less than condition?

如果我有一个三元组正在测试大于 than/less 的条件,然后将该值分配回原始变量,是否有简写形式?

var firstVar = 1
var secondVar = 2
firstVar = firstVar > secondVar ? firstVar : secondVar

第3行有没有更简单的写法?

我将使用一个简单的 if 语句,该语句仅在条件为 true 时才赋值。

var firstVar = 1;
var secondVar = 2;
if (firstVar <= secondVar) firstVar = secondVar;
console.log(firstVar);

我可以为您的测试想出另一种可能的单行快捷方式,使用 || 运算符(逻辑或)。

var firstVar = 1;
var secondVar = 2;
firstVar > secondVar || (firstVar = secondVar);
console.log(firstVar);

基本上,第三行的表达式 returns true,如果第一个操作数被评估为 true(整个表达式将 return "truthy" return 通常是第一个操作数中表达式的值)。否则,它将在第二个操作数中 return 表达式(在这种情况下为变量赋值的 return 值)。但是,return 整个表达式的值未分配给任何变量,因为如果不满足给定条件(第一个操作数),目标只是执行特定赋值(第二个操作数)。

此外,此方法可能不像简单的 if 语句那样直观,因为变量赋值只有在第一个操作数中的条件 满足时才会发生。它的工作方式类似于 else 语句中的变量赋值,位于前一个答案的空 if 语句之后。或者,如果此模式与您的原始逻辑不匹配,您可以在第一个操作数中反转语句。

注意:第二个操作数中的变量赋值必须在括号中,因为它的优先级低于逻辑或。如果您在构造表达式时不确定运算符的优先级,则可能需要在 MDN 上检查此 table。