javascript - 运算符的条件运算符

标签 javascript operators ternary

我有一段代码:

if (foo > bar) {
    baz = foo - bar
} else {
    baz = foo + bar
}

我有一个问题,是否可以以某种方式将这段代码缩短为一行,比如

PSEUDOCODE:

baz = foo (foo > bar ? + : -) bar

Real code I'd like to shorten

if (gradientStartH > gradientEndH) {
    h = gradientStartH - Math.abs(gradientStartH - gradientEndH) / arr.length * i
} else {
    h = gradientStartH + Math.abs(gradientStartH - gradientEndH) / arr.length * i
}

谢谢!

最佳答案

您可以将支票转换为数字或将 -1 作为因数。

baz = foo + (foo > bar || -1) * bar

最简洁的方法是使用带有操作数的对象并检查获取操作数。

op = {
    true: function (a, b) { return a + b; }, // add
    false: function (a, b) { return a - b; } // sub
}
baz = op[foo > bar](foo, bar);

关于javascript - 运算符的条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55069719/

相关文章:

javascript foreach onclick

javascript - 如果没有检查任何内容,则崩溃

javascript - 这条 JS 线是如何工作的?

python - 如何将缩放比例放在三元图中的刻度上而不是 x 和 y 轴上

Bash 三元运算在任一 bool 条件下给出相同的输出

java - 二元运算符 & 的错误操作数类型

javascript - 如何有条件地提交表单?

javascript - 在 React 中动态嵌套元素

Python求幂运算顺序和分组

c++ - 为什么我们不能接受输入并一步操作它?