Строковое уравнение JavaScript с оператором &

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 запускает код, он фактически устанавливает returnUrl в orders/latest. Не знаю, как

George 22.08.2018 14:15

@ Джордж ах, верно, моя плохая

Jeremy Thille 22.08.2018 14:17

@JeremyThille Все в порядке, это меня тоже достало, ответ bryan60 объясняет, почему он делает то, что делает

George 22.08.2018 14:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

это устанавливает для "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);

Другие вопросы по теме