Условные операторы ?: и ??

Последнее обновление: 11.08.2023

Условные операторы позволяют проверить некоторое условие и в зависимости от результата проверки выполнить определенные действия. Здесь мы рассмотрим оператор ?: или так называемый тернарный оператор и операцию ??.

Тернарная операция

Тернарная операция состоит из трех операндов и имеет следующее определение:

[первый операнд - условие] ? [второй операнд] : [третий операнд]
.

В зависимости от условия в первом операнде тернарная операция возвращает второй или третий операнд. Если условие в первом операнде равно true, то возвращается второй операнд; если условие равно false, то третий. Например:

const a = 1;
const b = 2;
const result = a < b ? a: b;
console.log(result); // 1

Здесь первый операнд представляет следующее условие a < b. Если значение константы a меньше значения константы b, то возвращается второй операнд - a, то есть константа result будет равна a.

Если значение константы a больше или равно значению константы b, то возвращается третий операнд - b, поэтому константа result будет равна значению b.

В качестве операндов также могут выступать выражения:

const a = 1;
const b = 2;
const result = a < b ? a + b : a - b;
console.log(result); // 3

В этом примере кода первый операнд представляет то же самое условие, что и в предыдущем примере, однако второй и третий операнды представляют арифметические операции. Если значение константы a меньше значения константы b, то возвращается второй операнд - a + b. Соответственно константа result будет равна сумме a и b.

Если значение константы a больше или равно значению константы b, то возвращается третий операнд - a - b. Соответственно константа result будет равна разности a и b.

Оператор ??

Оператор ?? (nullish coalescing operator) позволяет проверить значение на null и undefined. Он принимает два операнда:

левый_операнд ?? правый_операнд

Оператор возвращает значение левого операнда, если оно НЕ равно null и undefined. Иначе возвращается значение правого операнда. Например:

const result = "hello" ?? "world";
console.log(result);	// hello

console.log(0 ?? 5);	// 0

console.log("" ?? "javascript");	// "" - пустая строка

console.log(false ?? true);	// false

console.log(null ?? "not null");	// not null

console.log(undefined ?? "defined");	// defined

console.log(null ?? null);	// null
console.log(undefined ?? undefined);	// undefined

Оператор ??=

Оператор ?? имеет модификацию в виде оператора ??=, который также позволяет проверить значение на null и undefined. Он принимает два операнда:

левый_операнд ??= правый_операнд

Если левый операнд равен null и undefined, то ему присваивается значение правого операнда. Иначе левый операнд сохраняет свое значение. Например:

const message = "Hello JavaScript";
let text = "Hello work!"
text ??= message;
console.log(text);	// Hello work!

Здесь переменная text не равна null или undefined, поэтому она сохраняет свое значение. Обратный пример:

const message = "Hello JavaScript";
let text = null;
text ??= message;
console.log(text);	// Hello JavaScript

Здесь переменная text равна null, поэтому при посредстве оператора ??= она получает значение переменной message.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850