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