Тройное равенство в информатике

Эквиваленция
Исключающее ИЛИ-НЕ, EQ, XNOR

Диаграмма Венна
Определение x = y <displaystyle x=y>
Таблица истинности ( 1001 ) <displaystyle (1001)>
Логический вентиль
Нормальные формы
Дизъюнктивная x ⋅ y + x ¯ ⋅ y ¯ <displaystyle xcdot y+<overline >cdot <overline >>
Конъюнктивная ( x ¯ + y ) ⋅ ( x + y ¯ ) <displaystyle (<overline >+y)cdot (x+<overline >)>
Полином Жегалкина 1 ⊕ x ⊕ y <displaystyle 1oplus xoplus y>
Принадлежность предполным классам
Сохраняет 0 Нет
Сохраняет 1 Да
Монотонна Нет
Линейна Да
Самодвойственна Нет

Логическая равнозначность или эквивале́нция (или эквивале́нтность [1] ) — это логическое выражение, которое является истинным тогда, когда оба простых логических выражения имеют одинаковую истинность. Двуместная логическая операция обычно обозначается символом ≡ или ↔.

Эквиваленция A ⟺ B <displaystyle Aiff B> — это сокращённая запись для выражения ( ¬ A ∧ ¬ B ) ∨ ( A ∧ B ) <displaystyle (
eg Aland
eg B)lor (Aland B)>

Задаётся следующей таблицей истинности:

Таким образом, высказывание AB означает «A то же самое, что B», «A эквивалентно B», «A тогда и только тогда, когда B».

Не надо путать эквиваленцию — логическую операцию с логической эквивалентностью [en] высказываний — бинарным отношением. Связь между ними следующая:

Логические выражения A <displaystyle A> и B <displaystyle B> эквивалентны в том и только в том случае, когда эквиваленция A ⟺ B <displaystyle Aiff B> истинна при всех значениях логических переменных.

«Определение, эквивалентны ли 2 переменные, является одним из наиболее важных операций в программировании» — Nicholas Zakas.

Другими словами, в вашем скрипте вы можете написать так:

Или, если вы хотите писать хорошие скрипты, делайте так:

Разница между этими двумя примерами в том, что во втором примере используется тройное сравнение, которое по-другому называют «строгое равенство» или «тождественное равенство».

Читайте также:  Текст длиной 32768 символов закодирован

Начинающие программисты JavaScript могут использовать тройное сравнение вместо двойного, но, возможно, они не до конца понимают, почему так важно использовать тройное равенство.

В чем разница?

Если сравнение с помощью двойного равно, то результат будет true, если две переменные равны. Но есть одна важная загвоздка: если сравнение делается между двумя переменными различных «типов», произойдет приведение типов.

Каждое значение JavaScript имеется свой специальный тип. Типы бывают: число, строка, булевый тип, функция, и объект. Поэтому, если вы попытаетесь сравнить строку с числом, браузер попытается конвертировать строки в число до того, как произойдет сравнение. Аналогично, если сравнение true и false с числом, true и false будут конвертированы в число 1 и 0 соответственно.

Это может привести к неожиданным результатам. Приведем несколько примеров:

Хотя это первоначально и может выглядеть правильно, это может привести к некоторым проблемам. Для примера:

В таких случаях большинство JavaScript экспертов рекомендуют всегда использовать тройное равенство и никогда не использовать двойное.

Оператор тройного сравнения никогда не делает приведение типов. Поэтому, когда вы используете тройное сравнение, вы сравниваете фактические значения.

Это означает, что использование тройного равенство во всех случаях выше вернуло бы правильный результат:

Что насчет неравенства?

При выполнении оператора не-равно к выражению, применяются те же правила. Только на этот раз, нужно использовать двойные равно против одного.

Вот несколько примеров с использованием оператора !=.

Заметьте, что везде вернулась обращенное значение true, т.к. произошло приведение типов.

Если мы изменим двойное равенство на тройное, мы получим правильные результаты:

Заключение

Как уже упоминалось, вы, вероятно, уже использовали тройное равно, но повторить заново всегда полезно. При изучении данной статьи, я сам узнал об этой концепции много нового.

Читайте также:  Чем приходится жертвовать при создании компьютерных сетей

Вот, что говорит Zakas о тройном равенстве: «. Это помогает поддерживать целостность данных типа во всем коде».

Лучше всего почитать объяснение в официальной документации .

Оператор равенства == сравнивает две переменные с приведением типов, если это необходимо. Если 2 операнда имеют разный тип, они приводятся к одному, и затем сравниваются.

Оператор идентичности === проверяет, являются ли переменные равные и при этом имеют одинаковый тип. То есть, грубо говоря, если у операндов будет разный тип, то === сразу же вернёт false, не будет даже смотреть на их значения.

Я составил таблицу, которая наглядно демонстрирует, как 2 переменные соотносятся друг с другом.

‘===’ означает, что они считаются идентичными.
‘==’ означает, что они считаются равными.
‘!=’ означает, что они не считаются равными.

Оцените статью
Добавить комментарий

Adblock detector