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

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

2 голосов
/ 24 января 2020

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

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

1 Ответ

3 голосов
/ 24 января 2020

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

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 веб-документах

...