javascript - 当三元测试大于/小于条件时,简写是什么?

标签 javascript ternary-operator

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

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/

相关文章:

c - C 中棘手的三元运算符

javascript - Sitecatalyst - DTM - 直接调用规则 - 清除粘性变量

javascript - 在 div 中重新定位图像

javascript - react 原生 : detect dev or production env

javascript - 为什么 0 < -0.75 < 1 为真?

c# - 是否有三元运算符可以在 C# 中运行函数?

javascript - 堆叠三元运算符在 Angularjs 表达式中不起作用

python - Python 函数参数打包和解包

javascript - 从 Chrome 扩展程序读取选项卡的控制台输出

javascript - 无论如何要在 iPad 上加载页面后用 javascript 删除所有 <a href=> 标签?