如果我有一个三元数正在测试大于/小于条件,然后将该值分配回原始变量,是否有简写?
var firstVar = 1
var secondVar = 2
firstVar = firstVar > secondVar ? firstVar : secondVar
有没有更简单的方法来编写第 3 行?
最佳答案
我可以为您的测试想到另一种可能的单行快捷方式,使用 ||
运算符(逻辑 OR)。
var firstVar = 1;
var secondVar = 2;
firstVar > secondVar || (firstVar = secondVar);
console.log(firstVar);
基本上,如果第一个操作数的计算结果为 true
,则第三行的表达式将返回 true
(整个表达式通常将返回第一个操作数中表达式的“truthy”返回值) )。否则,它将返回第二个操作数中的表达式(在本例中返回变量赋值的值)。但是,整个表达式的返回值不会分配给任何变量,因为目标只是在不满足给定条件(第一个操作数)的情况下执行特定分配(第二个操作数)。
此外,此方法可能不如简单的 if
语句那么直观,因为只有当第一个操作数中的条件不满足时,变量赋值才会发生。它将像之前答案中的空 if
语句之后的 else
语句中的变量赋值一样工作。或者,如果此模式与您的原始逻辑不匹配,您可以在第一个操作数中反转语句。
注意:第二个操作数中的变量赋值必须位于括号内,因为它的优先级低于逻辑“或”。您可能想在 MDN 上查看此表。 ,如果您在构造表达式时不确定运算符的优先级。
关于javascript - 当三元测试大于/小于条件时,简写是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52177327/