Nullish Coalescing – это языковая особенность JavaScript, которая недавно была повышена на 4 -й стадии TC39, группы, которая поддерживает определение JavaScript. Это означает, что эта языковая функция является действительной JavaScript по состоянию на ES2020.
При любой языковой функции хорошо понять, как это помогает нам. Nullish Coalescing помогает нам устранить определенный класс кода, который в первую очередь состоит из проверки, если что -то является нулевым или неопределенным.
Давайте возьмем пример, где мы хотим отобразить персонажи «Звездных войн». Имя и фамилия Анкет Когда фамилия не определена, мы должны показать «не указано», но если фамилия «» «», мы должны относиться к ней, как к персонажу, не имеет фамилии. (Отметив, что если бы это не был примером кода, мы, вероятно, захотим реализовать для этого другую логику)
Например, если у нас были следующие определения символов:
const hanSolo = {
first: 'Han',
last: "Solo"
};
const chewbacca = {
first: "Chewbacca",
last: ""
}
const rey = {
first: "Rey",
lastName: undefined
}
Предположим, что у нас была функция, показать имя Это было ответственным за получение полного имени персонажа для отображения.
У нас может возникнуть соблазн связаться с логическим или оператором, как следует.
function displayName(character) {
const lastName = character.last || "Not specified"
log(character.first, lastName)
}
Это будет хорошо работать для Хан Соло и Rey Но потерпел бы неудачу для Чубакки, поскольку мы указываем, что его фамилия «» (это означает, что у него нет фамилии для нашего простого примера). "" оценивается как фальсификация, поэтому логический или оператор оценит, чтобы «не указан» в этом случае. Это не соответствует нашим требованиям, потому что последнее имя «» не должно вызывать DisplayName функция для добавления «не указан»
Без нулевого оператора объединения мы, как правило, должны проверить, что Lastname является нулевым или неопределенным, поскольку пустая строка оценивается как фальсификация.
Если мы изменим нашу функцию на следующее, все работает как ожидалось, однако, это немного больше кода.
function displayName(character) {
const lastName = character.last === null || character.last === undefined
? 'Not Specified'
: character.last;
log(character.first, lastName)
}
Использование Nullish Coalescing Operator намного более сфокусировано:
function displayName(character) {
const lastName = character.last ?? "Not specified"
log(character.first, lastName)
}
Это очень похоже на функцию, используя логическую или ” ” За исключением случаев, когда мы используем две вопросы вопроса «??» Посмотреть пример для этой статьи здесь
Пожалуйста, Найти меня в Твиттере на @ryanlanciaux
Оригинал: “https://dev.to/ryanlanciaux/nullish-coalescing-in-javascript-4bim”