Привет всем,
Здесь я буду делать заметки о конкретных операторах сравнения в Javascript. Это поможет мне запомнить специфику, а также может быть полезно для вас в качестве справочника! Я также попытаюсь транслитерировать то, что говорится в коде, чтобы его было легче читать.
Операторы равенства и неравенства
Оператор строгого равенства (===)
Равенство без преобразования типов
60 === 60;
// 60 (number) is strictly equal to 60 (number)
> true
60 === "60";
// 60 (number) is strictly equal to 60 (string)
> false
Оператор строгого неравенства (!==)
Неравенство без преобразования типов
60 !== 60;
// 60 (number) is strictly not equal to 60 (number)
> false
60 !== "60";
// 60 (number) is strictly not equal to 60 (string)
> true
Оператор свободного равенства (==)
Равенство с любыми преобразованиями типов (с дополнительными примерами)
*Дополнительные примеры не обязательно точны, но они верны в рамках языка кодирования.
60 == "60";
// 60 (number) is loosely equal to 60 (string)
> true
true == 1;
// true is loosely equal to 1 (number)
> true
"0" == false;
// 0 (string) is loosely equal to false
> true
null == undefined;
// null is loosely equal to undefined
> true
" " == 0;
// Empty Quotations is loosely equal to 0 (number)
> true
Оператор неравенства (!=)
Неравенство с любыми преобразованиями типов
60 != "60";
// 60 (number) is not equal to 60 (string)
> false
61 != 60;
// 61 (number) is not equal to 60 (number)
> true
Реляционные операторы
- больше чем (>)
- больше чем или равно (>=)
- меньше чем (<)
- меньше чем или равно (<=)
*Важно отметить, что здесь Javascript попытается преобразовать строки в числа.
*Для последнего примера обратите внимание, что если обе стороны неравенства являются строками, он будет сравнивать их только лексикографически (слева направо, по каждому символу). Он НЕ будет преобразовывать всю строку в число.
70 > "60";
// 70 (number) is greater than 60 (string)
> true
70 >= 70;
// 70 (number) is greater than or equal to 70 (number)
> true
70 < "80";
// 70 (number) is less than 80 (string)
> true
70 <= "71";
// 70 (number) is less than or equal to 71 (string)
> true
"70" > "8";
// 70 (string) is greater than 8 (string)
> false (see note above)
Источники
MDN:
-
Выражения и операторы
-
Сравнение равенств и одинаковость