Кажется, я часто обрабатываю такие особые случаи. Должен быть более сжатый синтаксис или конструкция:
var x = solveForX(); /* some slow calculation here */
if (x < 0)
{
x = 0;
}
Это эквивалентно, но не кажется более элегантным:
var x;
x = (x = solveForX()) < 0 ? 0 : x;
Может быть, есть трюк с небольшим сдвигом?
Обновление: Я провел несколько тестов, чтобы сравнить два моих любимых ответа - тот, который я принял, и Peter Ajtai's. Оказывается, Питер довольно быстро! Выполняя 1 000 000 итераций каждого (я также запускал версию, которая кэширует Math.max
, чтобы узнать, сколько времени было внесено в поиск) показывает, что Питер работает менее чем в половине времени версии Math.max
даже при кешировании max
.
Тем не менее, даже самый медленный метод все еще довольно быстрый.