我有一段代码:
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/