const returnUrl =
(paymentType === 'order-pay-now' && 'orders/latest') ||
'my-account/overview'
Что меня смущает, так это paymentType === 'order-pay-now' && 'orders/latest'
Будет ли он сначала проверять, равно ли paymentTypeorder-pay-now, и orders/latest всегда будет возвращать истину. Значит, запись paymentType === 'order-pay-now' дает то же самое?
Я не вижу смысла в использовании &&. Может быть, это ошибка, из-за которой следовало бы использовать ||?
Таким образом, returnUrl будет либо логическим, либо строковым значением my-account/overview ??
@ Джордж ах, верно, моя плохая
@JeremyThille Все в порядке, это меня тоже достало, ответ bryan60 объясняет, почему он делает то, что делает



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


это устанавливает для "returnUrl" значение 'orders / latest' ЕСЛИ тип оплаты - 'order-pay-now', иначе returnUrl установлен на 'my-account / overview'
Он использует тот факт, что условные операторы возвращают значение последнего условия, которое им необходимо оценить в JavaScript, а не просто истинное или ложное. ТБХ, я не люблю читать такой код и думаю, что люди пытаются быть слишком умными, когда пишут так.
гораздо яснее было бы:
const returnUrl = (paymentType === 'order-pay-now') ? 'orders/latest' : 'my-account/overview';
Однако существуют варианты использования условных выражений таким образом, например, если вы заполняете объект из веб-ответа неопределенными значениями и хотите установить значения по умолчанию для нулевых значений, хороший метод - это сделать:
myObj.prop = response.prop || 'default value';
Таким образом, вы говорите «установите свойство объекта в свойство ответа ИЛИ значение по умолчанию» в понятной и удобочитаемой форме.
Это похоже на тернарный оператор:
var paymentType = `order-pay-now`;
const returnURL = paymentType==='order-pay-now' ? 'orders/latest' : 'my-account/overview'
console.info(returnURL);
const second = ( paymentType==='order-pay-now' && 'orders/latest') || 'my-account/overview'
console.info(second);
@JeremyThille запускает код, он фактически устанавливает
returnUrlвorders/latest. Не знаю, как