Последовательность выполнения операторов в JavaScript (Часть I) - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию

    Выбери свою IT специальность

    Начать бесплатно

    Выбери свою IT специальность

    Начать бесплатно

      Последовательность выполнения операторов в JavaScript (Часть I)

      Введение

      В предыдущих статьях мы познакомились с правилами последовательности выполнения операторов. После того, как вы научились пользоваться элементарными операторами, мы ознакомимся и определим различия между операторами, которые похожи, но имеют критические различия в языках программирования: равенства = и неравенства !=. Определим отличия операторов строгого и нестрогого сравнения и особенности их применения.

      Операторы JS


      Перед тем, как приступить к рассмотрению операторов, нам стоит познакомиться с логическими значениями, а именно логическим типом данных, который может принимать следующие значения: первое говорит об истинности условия (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 и особенностью их применения. 

      КОММЕНТАРИИ И ОБСУЖДЕНИЯ

      Пакеты подписки с доступом ко всем курсам и сервисам

      Стартовый
      • Все видеокурсы на 3 месяца
      • Тестирование по 10 курсам
      • Проверка 5 домашних заданий
      • Консультация с тренером 30 мин
      Базовый
      • Все видеокурсы на 6 месяцев
      • Тестирование по 16 курсам
      • Проверка 10 домашних заданий
      • Консультация с тренером 60 мин
      Премиум
      • Все видеокурсы на 1 год
      • Тестирование по 24 курсам
      • Проверка 20 домашних заданий
      • Консультация с тренером 120 мин
      Notification success
      Мы используем cookie-файлы, чтобы сделать взаимодействие с нашими веб-сайтами и услугами простым и значимым.