Однострочный if/else в JavaScript
Описание проблемы
У меня есть логика, которая переключает значения true/false с помощью конструкции switch
и else/if
, но я хотел бы сделать её более компактной и не использовать оператор switch
. В идеале, условие if/else должно быть преобразовано в одну короткую строку. Спасибо!!!
Вот пример кода:
var properties = {};
var IsItMuted = scope.slideshow.isMuted();
if (IsItMuted === true) {
properties['Value'] = 'On';
} else {
properties['Value'] = 'Off';
}
Как можно переписать этот код в более сжатом виде?
3 ответ(ов)
Вы хотите использовать тернарный оператор:
properties['Value'] = (IsItMuted === true) ? 'On' : 'Off';
? :
называется тернарным оператором и работает аналогично конструкции if
/else
, когда используется в выражении.
Код, который вы привели, создает объект properties
с одним свойством Value
. Это свойство получает значение в зависимости от результата вызова функции scope.slideshow.isMuted()
.
Если isMuted()
возвращает true
, то Value
будет равно строке "on"
, в противном случае - строке "off"
.
Однако чтобы сделать код более понятным и избежать путаницы с оператором &&
, лучше использовать тернарный оператор, который делает логику более явной. Например, можно переписать это так:
var properties = { "Value": scope.slideshow.isMuted() ? "on" : "off" };
В итоге, объект properties
будет содержать в Value
"on", если слайд-шоу выключено, и "off", если включено.
Вам не нужно создавать пустой объект, он может иметь свойства, и если вы хотите сократить код, вам не нужен и isItMuted
. Вот как можно объединить всё в одну строку:
var properties = { Value: scope.slideshow.isMuted() ? 'On' : 'Off' };
Если вам нужно ещё больше упростить, то этот код уже является наиболее сжатым вариантом для данной задачи.
Где найти документацию по форматированию даты в JavaScript?
Как определить нажатие клавиши Esc?
Как проверить, содержит ли массив строку в TypeScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub
Как остановить Babel от трансформации 'this' в 'undefined' и добавления "use strict"