Что такое условное обозначение, когда троичный тест на состояние больше / меньше чем? - PullRequest
0 голосов
/ 05 сентября 2018

Если у меня есть троица, которая тестирует условие больше или меньше, и это значение затем присваивается исходной переменной, есть ли для этого сокращение?

var firstVar = 1
var secondVar = 2
firstVar = firstVar > secondVar ? firstVar : secondVar

Есть ли более простой способ написать строку 3?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Я могу вспомнить другой возможный однострочный ярлык для вашего теста, используя оператор || (логическое ИЛИ).

var firstVar = 1;
var secondVar = 2;
firstVar > secondVar || (firstVar = secondVar);
console.log(firstVar);

В основном, выражение в третьей строке возвращает true, если первый операнд оценивается как true (целое выражение вернет "истинное" возвращаемое значение выражения в первом операнде в целом). В противном случае он будет возвращать выражение во втором операнде (в этом случае возвращается значение присваивания переменной). Однако возвращаемое значение всего этого выражения не присваивается какой-либо переменной, поскольку целью было только выполнить конкретное присваивание (второй операнд), если данное условие (первый операнд) не было выполнено.

Кроме того, этот метод может быть не таким интуитивно понятным, как простой оператор if, поскольку назначение переменной может произойти только в том случае, если условие в первом операнде не удовлетворено . Это будет работать как присвоение переменной в операторе else после пустого оператора if из предыдущего ответа. Или вы можете использовать обратный оператор в первом операнде, если этот шаблон не соответствует вашей исходной логике.

Примечание. Присвоение переменной во втором операнде должно быть в скобках, поскольку оно имеет более низкий приоритет, чем логическое ИЛИ. Возможно, вы захотите проверить эту таблицу на MDN , если вы не уверены в приоритетности операторов при построении выражений.

0 голосов
/ 05 сентября 2018

Я пойду с простым оператором if, который присваивает значение только если условие true.

var firstVar = 1;
var secondVar = 2;
if (firstVar <= secondVar) firstVar = secondVar;
console.log(firstVar);
...