Это 10-й из 100 дней моего изучения javascript, и сегодня я узнал об операторе объединения javascript Nullish (??)

Нулевой оператор объединения был представлен в ES2020.

Нулевой оператор объединения (??) — это логический оператор, который возвращает свой правый операнд, когда его левый операнд равен nullили undefined, а в противном случае возвращает свой левый операнд.

let x = 10 ?? 'no';
console.log(x);                     //10

let a = null ?? 'yes';
console.log(a);                    //yes

let y = 'hello' ?? 'no'; 
console.log(y);                   //hello

let b = undefined ?? 'yes';
console.log(b);                   //yes

По сути, нулевой оператор объединения позволяет нам проверить, является ли значение нулевым или неопределенным, и предоставить резервное значение, если это так.

когда кто-то хочет присвоить переменной значение по умолчанию, распространенным шаблоном является использование логического оператора ИЛИ (||)

let text = "hello";
let num = 10;

const count = num || 42;
const message = text || "hi";
console.log(count);                 //10          
console.log(message);               //"hello"

let text = undefined;
let num = null;

const count = num || 42;
const message = text || "hi";
console.log(count);                 //42          
console.log(message);               //"hi"

Однако из-за || будучи логическим оператором, левый операнд был приведен к логическому значению для оценки, и любое значение falsy (включая 0 , '', NaN, false и т. д.) не было возвращено. Такое поведение может привести к непредвиденным последствиям, если вы считаете 0, ‘’ допустимым значением.

let text = "";
let num = 0;

const count = num || 42;
const message = text || "hi";
console.log(count);                 //42         
console.log(message);              // "hi"

Нулевой оператор объединения позволяет избежать этой ловушки, возвращая второй операнд только тогда, когда первый оценивается либо как null, либо undefined(но никаких других ложных значений)

let text = "";
let num = 0;

const count = num ?? 42;
const message = text ?? "hi";
console.log(count);                 // 0       
console.log(message);              // ""

Это все на сегодня. Догонят завтра.

Спасибо за прочтение. Пожалуйста, хлопайте, если вы найдете историю полезной.

Ваши предложения всегда приветствуются. Просто прокомментируйте и дайте мне знать.

Продолжайте учиться! #100daysofjavascript