Это 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