JavaScript: Операторы сравнения
Оператор | Тип оператора | А | О | Типы значений |
---|---|---|---|---|
… < … … <= … … > … … >= … … == … … != … … === … … !== … |
Меньше чем Меньше или равно Больше чем Больше или равно Равно Не равно Строго равно Строго не равно |
слева направо слева направо слева направо слева направо слева направо слева направо слева направо слева направо |
2 2 2 2 2 2 2 2 |
число, число → булево число, число → булево число, число → булево число, число → булево любое, любое → булево любое, любое → булево любое, любое → булево любое, любое → булево |
Оператор ===
(строго равно) производит сравнение значений операндов без преобразования типов.
Значения считаются равными:
- Если оба значения являются
null
илиundefined
. - Если оба значения являются
true
илиfalse
. - Если оба значения являются числами с одним и тем набором цифр (
0
и-0
равны). - Если оба значения являются строками и они содержат одни и те же 16-битные последовательности.
- Если оба операнда ссылаются на один и тот же объект, массив или функцию.
Значения считаются не равными:
- Если два значения имеют различные типы.
- Если одно или оба значения являются
NaN
. - Если строки отличаются содержимым.
- Если две строки выглядят одинаково, но содержат различные последовательности 16-битных значений.
- Если оба операнда ссылаются на разные объекты, массивы или функции.
Если значения операндов равны оператор ===
возвращает true
, если не равны – false
:
alert('7' === 7); // false alert(null === null); // true alert((2 + 2) === 4); // true alert(0 === -0); // true
Оператор ==
(равно) выполняет сравнение значений. Если значения операндов имеют разные типы, оператор выполняет неявное преобразование типов и затем пытается выполнить сравнение.
Преобразование типов выполняется по следующим правилам:
- Если одно значение является числом, а другое – строкой, то строка преобразуется в число.
- Если один из операндов имеет значение
true
, оно преобразуется в число1
, если значениеfalse
– в число0
. - Если значение ссылочного типа сравнивается с числом или строкой, оператор попытается преобразовать его к примитивному значению.
Значения считаются равными:
- Если одно значение
null
, а другоеundefined
. - Если оба значения являются
null
илиundefined
. - Если оба значения являются
true
илиfalse
. - Если оба значения являются числами с одним и тем набором цифр (
0
и-0
равны). - Если оба значения являются строками и они содержат одни и те же 16-битные последовательности.
- Если оба операнда ссылаются на один и тот же объект, массив или функцию.
Значения считаются не равными:
- Если одно или оба значения являются
NaN
. - Если строки отличаются содержимым.
- Если две строки выглядят одинаково, но содержат различные последовательности 16-битных значений.
- Если оба операнда ссылаются на разные объекты, массивы или функции.
alert(null == undefined); // true alert("123" == 123); // true alert(true == "1"); // true alert(4 == 5); // false
Операторы !=
(не равно) и !==
(строго не равно) выполняют проверки, в точности противоположные операторам ==
и ===
. Например, оператор !=
возвращает false
, если два значения равны друг другу в том смысле, в каком они считаются равными оператором ==
, и true
в противном случае:
alert(4 != 3); // true alert("4" != 4); // false alert("4" !== 4); // true
Оператор <
(меньше) возвращает true
, если значение левого операнда меньше, чем значение правого операнда, в противном случае он возвращает false
:
alert(5 < 6); // true alert(5 < 4); // false
Оператор >
(больше) возвращает true
, если значение левого операнда больше, чем значение правого операнда, в противном случае он возвращает false
:
alert(5 > 3); // true alert(5 > 6); // false
Оператор <=
(меньше или равно) возвращает true
, если значение левого операнда меньше или равно значению правого операнда, в противном случае он возвращает false
:
alert(5 <= 6); // true alert(5 <= 5); // true alert(5 <= 4); // false
Оператор >=
(больше или равно) возвращает true
, если значение левого операнда больше или равно значению правого операнда, в противном случае он возвращает false
:
alert(5 >= 3); // true alert(5 >= 5); // true alert(3 >= 4); // false
Код буквы в нижнем регистре всегда больше, чем код буквы в верхнем регистре. Код цифры находящейся в строке всегда меньше кода буквенного символа в любом регистре. Обычно, буква расположенная в алфавитном порядке раньше меньше
, чем буква (в том же регистре) расположенная в алфавитном порядке после неё:
alert("a" > "Z"); // true alert("9" < "a"); // true alert("a" < "b"); // true alert("23" < "3"); // true (код строкового символа "2" – 50, а код "3" – 51)
С этой темой смотрят: