javascript - 三元运算的值范围在负值和正值范围内直到 0?

标签 javascript optimization coding-style ternary-operator

我有一个问题想要解决。 只要 x 为正,该表达式就有效

x > 0 ? x - y : x + y;

当它变为负值时,这就是问题开始的地方。 所以我想到了

x !=0 & x < 0 ? x - y : Math.abs(x - y)*-1) 

但这让我无处可去,我通过以下方式解决了它:

if (x > 0 && x - y > 0) {
    x -= y;
} else if (x < 0 && x + y > 0) {
    x += y;
} else {
    x = 0;
}

然而这很长并且看起来不优雅。 有什么办法可以通过三元运算使这个过程更短、更高效吗?

最佳答案

x = x >=0 ? x - y : x + y;
x = x < 0 ? 0 : x;

x = Math.max(x >= 0 ? x - y : x + y, 0);

关于javascript - 三元运算的值范围在负值和正值范围内直到 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9685499/

相关文章:

javascript - 使用循环创建新的 div,在每个新的 div 上附加子节点

javascript - 一分钟的 session 后触发弹出窗口(跨页面加载)

optimization - 优化 Google 脚本以隐藏列

javascript - JavaScript 数组和拆分问题

javascript - php echo javascript alert() 不工作

c++ - 测试内联(模板化)函数的返回值(它本身正在测试)是否针对一次测试进行了优化?

多变量的 Python 最小二乘法

javascript - 任务名称的 Gulp.js 约定

ios - NSKeyedArchiver 继承自 NSCoder 为什么会存在 NSKeyedUnarchiver?

javascript - 属性名称与非匿名函数相同