三元测试大于/小于条件时的简写是什么?

时间:2018-09-05 04:55:37

标签: javascript ternary-operator

如果我有一个三元组正在测试大于/小于条件,然后将该值分配回原始变量,那么是否有捷径呢?

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

有写第3行的更简单方法吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我可以想到使用||运算符(逻辑或)为您的测试提供另一种单行捷径。

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

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

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

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