Изображение выше — это снимок теста JavaScript, который я сделал и поделился в Твиттере. Посмотреть твит можно ЗДЕСЬ. В этой статье я объясню, как работает код, и покажу его результаты.

Давайте начнем

Прежде всего, давайте разберемся, как работает код.

В строке 1 мы объявляем массив с именем arr и инициализируем его двумя элементами: 5 и «undefined».

В строке 3 мы используем метод массива под названием forEach(), который проходит через каждый элемент массива и выполняет стрелочную функцию один раз для каждого элемента. Эта функция выполняет некоторые базовые проверки для каждого элемента, к которому она обращается.

В строках с 4 по 10 мы используем тернарный оператор (?:); в строке 10 есть еще один оператор, называемый нулевой оператор объединяющего присваивания (??=).

Сейчас троичное время ╰(*°▽°*)╯

Тернарный оператор — это просто сокращенное обозначение операторов if…else. Он проверяет условие и делает что-то на основе этого условия. Это синтаксис:

condition ? exprIfTrue : exprIfFalse

Вы ставите условие, которое хотите проверить, перед вопросительным знаком, затем после вопросительного знака указываете, что следует сделать, если заданное вами условие истинно. После двоеточия «:» указывается, что следует делать, если условие ложно. Это было нетрудно, не так ли?

Этот тернарный оператор можно связать в цепочку для выполнения серии условных проверок.

Если вам нужно сделать несколько проверок, которые зависят друг от друга, вы можете поместить один тернарный оператор в другой, образовав тем самым связь тернарных операторов. Это выглядит так:

condition1 ? value1
    : condition2 ? value2
    : condition3 ? value3
    : value4;

Возвращаясь к коду, мы видим следующее:

each == 1
    ? console.log('this is one')
    : each == 3
    ? console.log('this is three')
    : each
    ? console.log('four')
    : console.log((each ??= 'this is five'));

Да, он отличается от синтаксиса, проиллюстрированного ранее, потому что важно поставить двоеточие и вопросительный знак в правильном месте. Этот код объединяет несколько тернарных операторов.

Сначала мы проверяем, равен ли элемент, с которым мы имеем дело, 1, если да, то код выводит «это единица»; если это не так, мы проверяем другое условие: «каждый === 3». Если элемент равен 3, код выводит «это три», если нет, мы проверяем, является ли элемент правдивым значением (значение, которое оценивается как true при использовании в логическом контексте).

Совет: Использование имени элемента в качестве проверяемого условия эквивалентно проверке того, является ли элемент истинным или ложным значением.

// This block of code

if (elementName) {
  console.log('hi');
}

// is similar to
if (elementName != false) {
    console.log('hi');
}

Вернемся к коду. Если элемент является правдивым значением, код выводит «четыре». Если элемент не является истинным значением, код выдает выходные данные на основе условия в console.log().

console.log((each ??= 'this is five'));

/**The conditional statement in this code is
   (each ??= 'this is five')
*/

Это подводит нас к нашему следующему оператору; …

Оператор нулевого объединения ƪ(˘⌣˘)ʃ

…он же логический оператор присваивания с нулевым значением; онпросто проверяет, является ли элемент слева от него нулевым или неопределенным (нулевым). Если элемент имеет нулевое значение, то он присваивает элементу значение справа от него. Если элемент не имеет нулевого значения, он ничего с ним не делает.

Его синтаксис:

x ??= y

Итак, это означает код:

console.log((each ??= 'this is five'));

сначала проверит, имеет ли элемент (названный какeach) нулевое значение. Если да, то он присваивает ему значение справа, то есть «это пять». Если элемент не имеет нулевого значения, он печатает значение элемента.

Мы прибыли \^o^/

Вот и все! Учитывая все вышесказанное, вывод кода такой:

is….

four
this is five

Спасибо за прочтение ❤️ Пожалуйста, поаплодируйте этой статье как можно больше, если вы найдете ее полезной.

Вы можете найти меня в Твиттере и Instagram по адресу zombo_mah.

Хорошего дня ;-)