Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Сравнение

Сравнение отвечает на вопрос «да или нет»: больше ли сумма заказа ста долларов, совпадает ли пароль, исполнилось ли пользователю 18. Результат сравнения — всегда логическое значение true или false.

Операторы сравнения

Самое простое сравнение — «больше»:

console.log(5 > 3); // true
ОператорЗначениеПримерРезультат
>больше5 > 3true
<меньше5 < 3false
>=больше или равно5 >= 5true
<=меньше или равно4 <= 3false
===равно5 === 5true
!==не равно5 !== 3true

Строгое равенство

Оператор === проверяет, что значения совпадают и имеют одинаковый тип. Поэтому число 5 и строка '5' не равны:

console.log(5 === '5'); // false

Обратите внимание: равенство записывается тремя знаками =. Один знак = — это присваивание, а не сравнение.

Нестрогое равенство

В JavaScript есть и старый оператор ==. Перед сравнением он приводит значения к одному типу, и это даёт неожиданные результаты:

console.log('5' == 5); // true
console.log(0 == '');  // true

Из-за таких сюрпризов в современном коде используют только === и !==. Пара == и != встречается разве что в старых программах.

Результат можно сохранить

Сравнение — обычное выражение, и его результат можно положить в переменную. Такие переменные принято называть с is или has в начале:

const age = 20;
const isAdult = age >= 18;
 
console.log(isAdult); // true

Дальше такую переменную используют в условиях — об этом в следующей главе.

Сравнение строк

Строки сравниваются посимвольно, по алфавиту: буква, которая стоит дальше в алфавите, считается «больше». Заглавные буквы при этом меньше строчных:

console.log('кот' > 'кит');   // true
console.log('Анна' === 'анна'); // false

Чтобы сравнить строки без учёта регистра, приведите обе к одному регистру: a.toLowerCase() === b.toLowerCase().

NaN не равно ничему

Особое значение NaN не равно ничему, даже самому себе. Поэтому проверка x === NaN всегда даёт false:

console.log(NaN === NaN);       // false
console.log(Number.isNaN(NaN)); // true

Для проверки на NaN используйте функцию Number.isNaN().

Частая ошибка

Числа, записанные строками, сравниваются как текст — по первому символу, а не по величине. Символ '1' меньше '9', поэтому '10' оказывается меньше '9':

console.log('10' < '9');                 // true
console.log(Number('10') < Number('9')); // false

Значения из форм и файлов приходят строками, поэтому перед сравнением превращайте их в числа.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.