Введение
В предыдущих статьях мы познакомились с правилами последовательности выполнения операторов. После того, как вы научились пользоваться элементарными операторами, мы ознакомимся и определим различия между операторами, которые похожи, но имеют критические различия в языках программирования: равенства = и неравенства !=. Определим отличия операторов строгого и нестрогого сравнения и особенности их применения.
Перед тем, как приступить к рассмотрению операторов, нам стоит познакомиться с логическими значениями, а именно логическим типом данных, который может принимать следующие значения: первое говорит об истинности условия (true), второе говорит о ложности или неистинности (false).
Операторы, которые отвечают за сравнение двух операндов (их значений), как и другие операторы, возвращают значения либо true, либо false, которые зависят от результатов операции сравнения. Стоит отметить, что операнды такого типа чаще используются в условных и циклических конструкциях для создания пользовательского сценария.
Операторы равенства
Операторы, которые проверяют две величины, два своих операнда на совпадение, причем руководствуются разными определениями совпадения, равенства =, идентичности ==. Они принимают операнды с любыми типами данных и возвращают значение true при совпадении значений, иначе возвращают false.
Стоит отметить, что оператор идентичности === проверяет значения двух своих операндов на «идентичность» друг-другу, при этом руководствуется строгим определением совпадения, поэтому нередко можно встретить другое название – оператор строгого равенства. Оператор равенства == проверяет, «равны» ли его операнды, при этом допускается преобразование типов данных.
Давайте рассмотрим основные примеры работы данных операторов и определим ключевые особенности их работы.
document.write(("2" == 1) + "
"); // false
document.write(("3" == 3) + "
"); // true
document.write((false == 0) + "
");// true, поскольку false превращается в 0
document.write((true == 2) + "
"); // false, поскольку true превращается в 1
document.write((true == "1") + "
"); // true, произошло преобразование обоих переменных в числовой тип данных
При выполнении сравнения значения (или значения переменных) преобразуются к числам, случай, когда они изначально числового типа, является исключением.
document.write(("2" === 1) + "
"); // false
document.write(("3" === 3) + "
"); // false
document.write(("2" === "2") + "
"); // true
document.write((false === 0) + "
");// false
document.write((true === true) + "
"); // true
Когда проводится проверка на идентичность, не производится преобразование типов, следовательно, если у них разные типы – идентичными они быть не могут.
Кроме того, стоит помнить, что два значения будут идентичными, если оба являются числами с одинаковыми значениями. И они не могут быть NaN, поскольку значение NaN не бывает идентичным ничему, даже самому себе.
document.write((NaN == NaN) + "
");// false
document.write((NaN === NaN) + "
"); // false
Если сравнивать значение null и undefined, то они будут равными друг другу, но не идентичными.
document.write((null == undefined) + "
");// true
document.write((null == null) + "
");// true
document.write((null === undefined) + "
"); // false
document.write((undefined === undefined) + "
"); // true
Операторы != (неравенства) и !== (неидентичности) определяют собой выполнение проверок, которые являются противоположностями для операторов == и ===, соответственно. Особенность заключается в операторе ! –, который осуществляет операцию опровержения утверждения, логического НЕ, следовательно, инвертирует привычное значение возвращаемого результата.
Возвращаемым значением оператора != будет false, когда значения равны между собой, и true, когда неравны. Оператор !== возвращает значение false, если операнды идентичны, и true – когда неидентичны.
Видео курсы по схожей тематике:
Операторы отношения
Среди операторов отношения самыми часто используемыми являются операторы сравнения – используемые для определения больше ли одно значение другого или меньше. Познакомимся с каждым из них.
Операторы строгого сравнения:
Меньше (<)
Возвращаемый результат выполнения оператора < равен true, при соблюдении условия, что первый его операнд меньше второго операнда, иначе возвращается false.
Больше (>)
Возвращаемый результат выполнения оператора > является true, при соблюдении условия, что его первый операнд будет больше второго, и false, когда большим является значение второго операнда.
document.write(("2" > 1) + "
"); // true
document.write(("2" > 2) + "
"); // false
document.write((false < 1) + "
"); // true, преобразование false в 0
document.write((false < "1") + "
"); // true, преобразование false в 0, строки "1" в число 1
document.write((true < false) + "
"); // false
document.write((null < undefined) + "
"); // false, преобразование типов в числа
Операторы нестрогого сравнения:
Меньше или равно (<=)
Оператор <= вернет значение true, при этом первый его операнд может быть или меньше, или же быть равным второму, иначе мы получим false.
Больше или равно (>=)
Оператор >= вернет значение true, при этом первый его операнд может быть строго меньше второго, иначе возвращается false.
document.write(("2" >= 2) + "<br/>"); // true, преобразование значения из строки в число, равенство
document.write(("2" <= null) + "<br/>"); // false
Как видим, эти операторы могут работать с операндами любого типа, но сравнение происходит только среди значений числового типа и строкового, поэтому операнды, не являющиеся таковыми – преобразуются. Преобразование и сравнение выполняется, следуя основным правилам:
- когда значения первого и второго операндов числового типа, или же их значения преобразуются в числовой тип данных, сравнение происходит как численное;
- когда значения первого и второго операндов строкового типа или выполняется их преобразование в строки, сравнение происходит как между строками;
- когда первый операнд строкового типа, а второй – число, оператор сравнения пытается преобразовать значения строкового типа в числовой тип и произведет сравнение между числами, стоит отметить, что если нет возможности строку преобразовать в число, ее значение преобразуется в NaN, после чего мы получим false;
Бесплатные вебинары по схожей тематике:
document.write((2 > "abc") + "<br/>"); // false
- когда нет возможности преобразовать значения первого и второго операндов в тот тип, с которым может работать т.е. в числовой или строковый, операторы вернут значение false, то же получим, когда один из операндов будет NaN.
Кроме этого стоит помнить, что определение равенства при использовании операторов «<=» и «>=» выполняется только как исключение противоположного результата: «не больше» или «не меньше».
В следующей статье мы познакомимся с элементарными и ссылочными типами данных в JavaScript и особенностью их применения.
Статьи по схожей тематике