Оператор Nullish Coalescing в JavaScript
Эта статья объясняет оператор Nullish Coalescing в JavaScript.
YouTube Video
Оператор Nullish Coalescing в JavaScript
В JavaScript оператор Nullish Coalescing (??) проверяет, является ли значение null или undefined, и возвращает другое значение по умолчанию, если это так. Он похож на широко используемый логический оператор ИЛИ (||), но отличается тем, что специализируется на null и undefined.
Логический оператор OR возвращает правое значение, если левое значение является ложным, в то время как оператор объединения с null возвращает правое значение только если левое значение равно null или undefined. Эта функция позволяет корректно обрабатывать значения, такие как 0 и пустые строки ("").
Базовый синтаксис
1let result = value ?? defaultValue;value— это проверяемое значение.defaultValue— это значение, возвращаемое, еслиvalueравноnullилиundefined.
Примеры использования оператора Nullish Coalescing
В следующем примере реализуется процесс возврата значения по умолчанию в случае null или undefined.
1let name = null;
2let defaultName = "Anonymous";
3
4// If name is null or undefined, 'Anonymous' is returned
5let displayName = name ?? defaultName;
6console.log(displayName); // "Anonymous"
В этом коде, так как name равно null, возвращается значение defaultName, "Anonymous". Если name является значением, отличным от null или undefined, возвращается это значение.
Отличия от логического оператора ИЛИ
Оператор объединения с null похож на логический оператор OR, но имеет важное различие. Логический оператор OR проверяет «ложные» значения (false, 0, NaN, "", null, undefined и т. д.), в то время как оператор объединения с null проверяет только значения null и undefined.
Пример логического оператора ИЛИ:
1let count = 0;
2let defaultCount = 10;
3
4// Since count is falsy (0), defaultCount is returned
5let result = count || defaultCount;
6console.log(result); // 10
Пример оператора Nullish Coalescing:
1let count = 0;
2let defaultCount = 10;
3
4// Since count is neither null nor undefined, count is returned as is
5let result = count ?? defaultCount;
6console.log(result); // 0
Таким образом, оператор объединения с null сохраняет допустимые значения, такие как 0 и пустые строки (""), и возвращает значение по умолчанию только при необходимости. Поскольку логический оператор OR рассматривает эти значения как ложные и возвращает значение по умолчанию, важно выбирать подходящий оператор в зависимости от случая использования.
Пример использования в комбинации:
Оператор объединения с null также можно комбинировать с другими логическими операторами, но при этом требуется осторожность.
1let a = null;
2let b = 0;
3let c = false;
4
5// SyntaxError
6let result = a ?? b || c;- Например, при использовании совместно с логическим оператором OR (
||) или логическим оператором AND (&&) следует использовать скобки, чтобы уточнить порядок операций.
1let a = null;
2let b = 0;
3let c = false;
4
5let result = (a ?? b) || c;
6console.log(result); // false
- В этом примере сначала оценивается
a ?? b, и, так какaравноnull, возвращаетсяb. Затем выражениеb || cоценивается, и посколькуbложно, возвращаетсяc.
Случаи, когда оператор объединения с null полезен
Ниже приведены случаи, когда оператор объединения с null оказывается полезным.
- Значения по умолчанию для форм Это можно использовать в случаях, когда для полей ввода формы устанавливается значение по умолчанию, если пользователь ничего не вводит.
1let userAge = null;
2let defaultAge = 18;
3let age = userAge ?? defaultAge;
4console.log(age); // 18
- Обработка ответов API
Обработка запасного варианта может быть выполнена, если значение является
nullилиundefinedв ответах от API.
1let apiResponse = {
2 title: "New Article",
3 description: null
4};
5
6let title = apiResponse.title ?? "Untitled";
7let description = apiResponse.description ?? "No description available";
8console.log(title); // "New Article"
9console.log(description); // "No description available"
Резюме
Оператор объединения с null (??) очень полезен для инициализации данных и обработки ответов API, так как возвращает значение по умолчанию при обнаружении null или undefined. В частности, это лучший выбор, чем традиционный логический оператор OR (||), если нужно правильно обрабатывать ложные значения, такие как 0 или пустые строки.
Об операторе присваивания объединения с null (??=)
Обзор
В JavaScript был введён оператор присваивания объединения с null ??= для эффективного присвоения нового значения переменным, которые содержат null или undefined. Этот оператор представляет собой удобное сокращение для присваивания значения переменной только в том случае, если значение равно null или undefined.
Основное использование
Оператор присваивания объединения с null работает следующим образом:.
- Если переменная равна
nullилиundefined, ей присваивается значение из правой части выражения. - Если переменная не равна ни
null, ниundefined, то оператор ничего не делает, и значение переменной остаётся неизменным.
Синтаксис
Базовый синтаксис оператора присваивания объединения с null следующий:.
1x ??= y;xприсваивается значениеy, еслиxравноnullилиundefined.- Если у
xуже есть значение (не равноеnullилиundefined), то значениеxне изменяется.
Пример
Давайте посмотрим на основной пример использования оператора присваивания слияния с null.
1let userName = null;
2let defaultName = "Guest";
3
4// Since userName is null, defaultName is assigned
5userName ??= defaultName;
6
7console.log(userName); // "Guest"
- В этом коде, поскольку
userNameравноnull, переменной присваивается значениеdefaultName.
Далее приведен пример, в котором значение не является ни null, ни undefined.
1let userName = "Alice";
2let defaultName = "Guest";
3
4// Since userName is "Alice", nothing is assigned
5userName ??= defaultName;
6
7console.log(userName); // "Alice"
- В данном случае, поскольку
"Alice"уже присвоено переменнойuserName, новое присваивание не выполняется.
Сравнение с другими операторами присваивания
В JavaScript также существует несколько других операторов присваивания. Особенно важно различие между оператором присваивания логического ИЛИ (||=).
1let value = 0;
2value ||= 10; // Assign 10 if value is falsy
3console.log(value); // 10
Оператор присваивания логического OR присваивает значение даже при наличии таких ложных значений, как false, 0 или пустая строка (""), в то время как оператор присваивания объединения с null работает только тогда, когда значение равно null или undefined.
1let value = 0;
2value ??= 10;
3// Since value is neither null nor undefined,
4// nothing is assigned
5console.log(value); // 0
Поскольку оператор присваивания объединения с null работает только с null или undefined, он очень полезен, когда нужно сохранить такие значения, как 0 или false.
Примеры использования в реальном мире
Реальный пример использования оператора присваивания слияния с null может быть следующим:.
-
Установка значений по умолчанию
Это полезно для установки значений по умолчанию, когда пользовательский ввод или ответы API могут быть
nullилиundefined.
1let userSettings = {
2 theme: null,
3 notifications: true
4};
5
6// Since theme is null, "light" is assigned
7userSettings.theme ??= "light";
8
9console.log(userSettings.theme); // "light"
-
Обработка необязательных параметров
Его можно использовать для выполнения действий по умолчанию, когда аргументы функции не указаны.
1function greet(name) {
2 name ??= "Guest";
3 console.log(`Hello, ${name}!`);
4}
5
6greet(); // "Hello, Guest!"
7greet("Alice"); // "Hello, Alice!"
Резюме
Оператор присваивания объединения с null (??=) присваивает значение только в том случае, если левое значение равно null или undefined, делая код более лаконичным и предотвращая нежелательные присваивания. Особенно при работе с "ложными" значениями, такими как 0 или false, он может быть более подходящим, чем традиционный логический оператор ИЛИ (||=).
Используя этот оператор, вы можете создавать более устойчивый и читаемый код.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.