July 18, 2022
Learn JavaScript #5. Операторы сравнения.
Операторы сравнения
В JavaScript операторы записываются так:
- Больше/меньше:
a > b
,a < b
. - Больше/меньше или равно:
a
>=b
,a
<=b
. - Равно:
a
==b
. Для сравнения используется двойной знак равенства==
. Один знак равенстваa = b
означал бы присваивание. - Не равно. В математике обозначается символом ≠, но в JavaScript записывается как
a
!=b
.
Сравнение разных типов
При сравнении значений разных типов JavaScript приводит каждое из них к числу.
alert( '2' > 1 ); // true, string '2' становится числом 2 alert( '01' == 1 ); // true, string '01' становится числом 1
Логическое значение true
становится 1
, а false
– 0
.
Строгое сравнение
Оператор строгого равенства === проверяет равенство без приведения типов.
Другими словами, если a
& b
имеют разные типы, то проверка a
=== b
немедленно возвращает false
при попытке их преобразования.
Ещё есть оператор строгого неравенства !==, аналогичный !=.
Как избежать проблем
Помнить обо всех этих особенностях не обязательно, со временем они станут нам знакомы, но можно избежать проблем, если следовать надёжным правилам:
- Относитесь очень осторожно к любому сравнению с
undefined/null
, кроме случае строгого равенства ===. - Не используется сравнения >= > < <= с переменными, которые могут принимать значения
null/undefined
, разве что вы полностью уверены в том, что делаете. Если переменная может принимать эти значения, то добавьте для них отдельные проверки.
Итого
- Операторы сравнения возвращают значения логического типа
- Строки сравниваются посимвольно в лексикографическом порядке
- Значения разных типов при сравнении приводятся к числу. Исключением является сравнение с помощью операторов строгого равенства/неравенства
- Значения
null & undefined
равны == друг другу и не равны любому другому значению - Будьте осторожны при использовании операторов сравнений вроде
>
&<
с переменными, которые могут принимать значенияnull/undefined
. Хорошей идеей будет сделать отдельную проверку наnull/undefined
Задачи
Каким будет результат этих выражений?
5 > 4 // true, потому что 5 больше 4 'ананас' > 'яблоко' // false, потому что а меньше, чем я '2' > '12' // true, потому что идёт построковое сравнение и 2 больше 1 undefined == null // true, потому что равны друг другу и не равны другим undefined === null // false, потому что строгое сравнение разных типов null == 'n0\n' // false, потому что null равен только undefined null === +'n0\n' // false, потому что идёт строгое сравнение разных типов
Telegram-канал: unknown.dev
July 18, 2022, 20:00
0 views
1 reaction
0 replies
0 reposts