Я не знаю этого условного соглашения в JS(!params?.q). Я знаю тройное условие, но я не понимаю этого. Может ли кто-нибудь дать представление об этом или что я должен узнать, чтобы понять подобные соглашения?
Блок кода JS
if (!params?.q) {// I don't understand a '?' without a ternary //condition
setSkipFirstRender(false);
setSort({
name: PersonEnum.keys.displayName,
dir: PersonEnum.sortOrder.asc,
});
}
Оператор ?.
— это необязательный оператор цепочки, иногда также называемый оператором Элвиса.
Несмотря на использование символа ?
, необязательный оператор цепочки и тернарные операторы служат двум разным целям.
Обычно, если бы вы обращались к params.q
, а params
было бы нулевым или неопределенным, возникала бы ошибка. Необязательный оператор цепочки позволяет вам безопасно попытаться получить доступ к свойству q
без возникновения ошибки. В этом случае, если бы params
было нулевым или неопределенным, params?.q
оценивалось бы как undefined
.
По сути, это эквивалентно проверке if (!(params && params.q))
.
Вы можете узнать больше о необязательном операторе цепочки в https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining.
Это не троичное условие, это необязательный параметр цепочки МДН.