如果我有一个三元组正在测试大于/小于条件,然后将该值分配回原始变量,那么是否有捷径呢?
var firstVar = 1
var secondVar = 2
firstVar = firstVar > secondVar ? firstVar : secondVar
有写第3行的更简单方法吗?
答案 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上的此表。