Я могу вспомнить другой возможный однострочный ярлык для вашего теста, используя оператор ||
(логическое ИЛИ).
var firstVar = 1;
var secondVar = 2;
firstVar > secondVar || (firstVar = secondVar);
console.log(firstVar);
В основном, выражение в третьей строке возвращает true
, если первый операнд оценивается как true
(целое выражение вернет "истинное" возвращаемое значение выражения в первом операнде в целом). В противном случае он будет возвращать выражение во втором операнде (в этом случае возвращается значение присваивания переменной). Однако возвращаемое значение всего этого выражения не присваивается какой-либо переменной, поскольку целью было только выполнить конкретное присваивание (второй операнд), если данное условие (первый операнд) не было выполнено.
Кроме того, этот метод может быть не таким интуитивно понятным, как простой оператор if
, поскольку назначение переменной может произойти только в том случае, если условие в первом операнде не удовлетворено . Это будет работать как присвоение переменной в операторе else
после пустого оператора if
из предыдущего ответа. Или вы можете использовать обратный оператор в первом операнде, если этот шаблон не соответствует вашей исходной логике.
Примечание. Присвоение переменной во втором операнде должно быть в скобках, поскольку оно имеет более низкий приоритет, чем логическое ИЛИ. Возможно, вы захотите проверить эту таблицу на MDN , если вы не уверены в приоритетности операторов при построении выражений.