Оператор 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-канал.