我似乎经常处理这样的特殊情况。必须有更简洁的语法或结构:
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/