Сегодня я узнал о логическом ИЛИ в JavaScript.

function splitPairs(text) {
return (text + "_").match(/../g) || [];
}

Если текст является строкой, этот короткий алгоритм сгруппирует вашу строку в последовательные пары. Если текстовая строка имеет нечетную длину, к одинокому элементу последней пары добавляется подчеркивание.

Например:

splitPairs("HelloWorld")

вернется

["He", "ll", "oW", "or", "ld"]

Добавление s к «HelloWorld» вернет

["He", "ll", "oW", "or", "ld", "s_"]

Как это работает

Фрагмент (текст + «_») просто добавляет подчеркивание в конце текста.

Часть match вернет список текста, разделенного парами.

Последняя часть самая интересная: || [].

|| является логическим символом ИЛИ. Этот фрагмент предназначен для случая пустой входной строки, и в этом случае будет возвращено «[]», а не нулевое значение.

Как работает логическое ИЛИ?

Если вы программист/компьютерщик и читаете это, вы знаете таблицу истинности для логической дизъюнкции:

При использовании логического ИЛИ в JavaScript каждое из двух утверждений можно назвать «ложным» или «истинным».

Утверждение является «ложным», если оно похоже на одно из приведенных выше:

  • нулевой
  • Нэн
  • неопределенный
  • 0
  • []
  • “” or ‘’ or ``

По сути, пустую структуру данных можно назвать «ложной», и логический оператор ИЛИ классифицирует ее как ложную.

Правдивое утверждение — это любая структура данных, имеющая значение, по существу:

  • [1]
  • 50
  • "привет"

и т. д.

Логическое ИЛИ функционирует как значения истинности для логических значений.

Но чего вы можете не заметить, так это того, что логическое ИЛИ всегда будет возвращать один из операндов в операторах логического ИЛИ. Это означает, что когда логический оператор ИЛИ используется с небулевыми операндами, он возвращает нелогическое значение.

Итак, какое значение он вернет?

Если оба операнда «истинны», операция вернет первый операнд в операции.

Если один операнд «истинный», а другой «ложный», будет возвращен элемент «истинный».

Наконец, если оба операнда «ложны», логическая операция ИЛИ вернет второй операнд в операции.

Приложение

В функции splitPairs() в верхней части страницы, если в первом операнде вообще есть совпадение, результатом логического ИЛИ будет список пар.

Однако, если текст равен «», первый операнд оценивается как «ложь», что означает, что будет возвращен второй операнд, [].

Вот почему логическая дизъюнкция в языках программирования часто может использоваться в качестве замены для операторов if. Если первое истинно, оно возвращается; в противном случае возвращается второй.

Ссылки:





Миссия «Разделенные пары. Проблемы с кодированием javascript — Js.CheckiO
Разделите строку на пары по два символа. Если строка содержит нечетное количество символов, то недостающие…js.checkio.org»