Разница между ?? и ||

Я рассматривал новые предлагаемые функции в ES2020 и наткнулся на?? оператор, также известный как "нулевой оператор объединения".

Объяснение было расплывчатым, и я до сих пор не понимаю, чем оно отличается от логического оператора ИЛИ (||)

1 ответ

Решение

Объяснение очень простое, давайте предположим, что у нас следующая ситуация, мы хотим получить значение, если оно существует в объекте, или использовать другое значение, если оно не определено или равно нулю.

const obj = { a: 0 }; 
const a = obj.a || 10; // gives us 10

// if we will use ?? operator situation will be different
const obj = { a: 0 };
const a = obj.a ?? 10; // gives us 0

// you can achieve this using this way
const obj = { a: 0 };
const a = obj.a === undefined ? 10 : obj.a; // gives us 0

// it also work in case of null
const obj = { a: 0, b: null };
const b = obj.b ?? 10; // gives us 10

В основном этот оператор делает следующее:

// I assume that we have value and different_value variables
const a = (value === null || value === undefined) ? different_value : value;

Более подробную информацию об этом вы можете найти в веб-документации MDN.

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