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

Заказать звонок

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

    Подписка

    Заказать звонок

    +38 099 757 27 82
    РУС
    • РУС
    • УКР
    Arrow
    🌷Набор групп на обучение с ментором - FrontEnd, .NET, Python, Java, FullStack, QA.
    Arrow

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

    advertisement advertisement

    Введение

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

    Операторы 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 и особенностью их применения. 

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

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

    Библиотека современных IT знаний в удобном формате

    Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

    Стартовый
    • Все видеокурсы на 3 месяца
    • Тестирование по 10 курсам
    • Проверка 5 домашних заданий
    • Консультация с тренером 30 мин
    59.99 $
    Оформить подписку
    Базовый
    • Все видеокурсы на 6 месяцев
    • Тестирование по 16 курсам
    • Проверка 10 домашних заданий
    • Консультация с тренером 60 мин
    89.99 $
    Оформить подписку
    Премиум
    • Все видеокурсы на 1 год
    • Тестирование по 24 курсам
    • Проверка 20 домашних заданий
    • Консультация с тренером 120 мин
    169.99 $
    Оформить подписку
    Notification success