javascript - 有没有更巧妙的方法来做到这一点?

标签 javascript math

我似乎经常处理这样的特殊情况。必须有更简洁的语法或结构:

var x = solveForX(); /* some slow calculation here */
if (x < 0)
{
    x = 0;
}

这是等价的,但感觉并不优雅:

var x;
x = (x = solveForX()) < 0 ? 0 : x;

也许有一点移位技巧?


更新:我跑了some benchmarks比较我最喜欢的两个答案——我接受的那个,和Peter Ajtai's .事实证明,彼得的速度要快得多!每个运行 1,000,000 次迭代(我还运行了一个缓存 Math.max 的版本以查看查找贡献了多少时间)表明 Peter 的运行时间不到 Math.max< 的一半 版本,即使使用 max 缓存也是如此。

也就是说,即使是“最慢”的方法仍然很快。

最佳答案

怎么样

var x = Math.max(solveForX(), 0);

关于javascript - 有没有更巧妙的方法来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291505/

相关文章:

javascript - 通过 2 个匹配属性从对象数组中删除重复项

javascript - Cloud Storage for Firebase 限制(组合)多个文件上传的大小

javascript - 多次延迟链接 jQuery .addClass 和 .removeClass

python - 提高 Numpy 性能

javascript - 使用 parseInt() 将用户的 promt() 更改为数字的更好方法

javascript - 使用 jQuery 显示前一个 td 元素

javascript - 将天数添加到日期格式 yyyy-mm-dd

javascript - 将字母字符串转换为数字并递归求和,使它们低于某个最大值

python - python解释器是否隐含地使用了中国余数定理?

javascript - 如何修复 JS 相关的 : The system cannot find the file specified - . reduce()