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

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

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

Подписка

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

+38 099 757 27 82

Последовательность выполнения операторов в 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
Мы используем cookie-файлы, чтобы сделать взаимодействие с нашими веб-сайтами и услугами простым и значимым.