← JavaScript/Операторы сравнения#52 из 383← ПредыдущийСледующий →+15 XP
Полезно по теме:Гайд: как учить JavaScriptПрактика: JS базаПрактика: async и сетьТермин: Closure

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

Каждый раз когда ты входишь в аккаунт на каком-то сайте, сервер сравнивает введённый пароль с сохранённым. Когда Ozon проверяет хватает ли баллов на скидку — сравнивает числа. Операторы сравнения — это основа любой логики в программировании.

На основе предыдущих уроков

Мы уже знаем типы данных и переменные. Сравнения работают с этими данными и возвращают boolean: true или false.

Какую проблему решают сравнения?

Без сравнений программа не может принимать решения. Нужно проверить: пользователь совершеннолетний? Хватает ли денег? Совпадает ли промокод? Всё это — сравнения.

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

| Оператор | Значение | Пример |

|----------|----------|--------|

| === | строгое равенство (тип + значение) | 5 === 5 → true |

| !== | строгое неравенство | 5 !== 6 → true |

| > | больше | 10 > 5 → true |

| < | меньше | 3 < 7 → true |

| >= | больше или равно | 5 >= 5 → true |

| <= | меньше или равно | 4 <= 3 → false |

Главное правило: всегда === вместо ==

Двойное равенство == делает неявное приведение типов — пытается угадать что ты имеешь в виду. Это приводит к неожиданным результатам:

0 == false    // true  — ноль приравнивается к false
0 === false   // false — разные типы, правильно!

'' == false   // true  — пустая строка тоже falsy
'' === false  // false — правильно

null == undefined   // true  — специальное правило ==
null === undefined  // false — правильно

Запомни: используй === и !== всегда. == и != — только если знаешь зачем (редко нужно).

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

Строки сравниваются по алфавиту (точнее по Unicode-кодам):

'apple' < 'banana'  // true
'Яблоко' > 'Апельсин'  // true (Я > А)
'10' > '9'  // false! '1' < '9' в строковом сравнении
10 > 9      // true — числовое сравнение

Типичные ошибки

Ошибка 1: = вместо === (присваивание вместо сравнения)

let isAdmin = false
if (isAdmin = true) {  // Это присваивание! Всегда true!
  console.log('доступ открыт')  // выполнится всегда
}
// Правильно:
if (isAdmin === true) { ... }
// Или просто:
if (isAdmin) { ... }

Ошибка 2: Сравнивать число со строкой через ===

const input = '18'  // пришло из формы как строка
input === 18  // false — разные типы
Number(input) === 18  // true — правильно, преобразовали

Ошибка 3: Использовать == для null-проверок

const value = 0
if (value == false) console.log('пусто')  // выполнится! 0 == false
if (value === false) console.log('пусто') // не выполнится — правильно

В реальных проектах

Операторы сравнения — строительные блоки любой валидации: проверка форм, авторизация, фильтрация данных. Ошибка с == вместо === — классический источник багов, которые сложно найти.

Примеры

Система проверок при оформлении заказа

const user = {
  age: 20,
  balance: 3500,
  bonusPoints: 250,
  promoCode: 'SALE2025',
}

const movie = { minAge: 18, price: 299 }
const minOrderForBonus = 2000
const correctPromo = 'SALE2025'

// Проверки через строгое сравнение
const ageAllowed = user.age >= movie.minAge
console.log('Возраст ок:', ageAllowed)                    // true

const canAfford = user.balance >= movie.price
console.log('Денег хватает:', canAfford)                  // true

const promoValid = user.promoCode === correctPromo
console.log('Промокод верный:', promoValid)               // true

const bonusEligible = user.balance >= minOrderForBonus
console.log('Бонус за заказ:', bonusEligible)             // true

// Показываем почему === лучше ==
console.log('1000 == true:', 1000 == true)   // false (интересно!)
console.log('1 == true:', 1 == true)         // true (неожиданно?)
console.log('1 === true:', 1 === true)       // false (правильно!)

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

Каждый раз когда ты входишь в аккаунт на каком-то сайте, сервер сравнивает введённый пароль с сохранённым. Когда Ozon проверяет хватает ли баллов на скидку — сравнивает числа. Операторы сравнения — это основа любой логики в программировании.

На основе предыдущих уроков

Мы уже знаем типы данных и переменные. Сравнения работают с этими данными и возвращают boolean: true или false.

Какую проблему решают сравнения?

Без сравнений программа не может принимать решения. Нужно проверить: пользователь совершеннолетний? Хватает ли денег? Совпадает ли промокод? Всё это — сравнения.

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

| Оператор | Значение | Пример |

|----------|----------|--------|

| === | строгое равенство (тип + значение) | 5 === 5 → true |

| !== | строгое неравенство | 5 !== 6 → true |

| > | больше | 10 > 5 → true |

| < | меньше | 3 < 7 → true |

| >= | больше или равно | 5 >= 5 → true |

| <= | меньше или равно | 4 <= 3 → false |

Главное правило: всегда === вместо ==

Двойное равенство == делает неявное приведение типов — пытается угадать что ты имеешь в виду. Это приводит к неожиданным результатам:

0 == false    // true  — ноль приравнивается к false
0 === false   // false — разные типы, правильно!

'' == false   // true  — пустая строка тоже falsy
'' === false  // false — правильно

null == undefined   // true  — специальное правило ==
null === undefined  // false — правильно

Запомни: используй === и !== всегда. == и != — только если знаешь зачем (редко нужно).

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

Строки сравниваются по алфавиту (точнее по Unicode-кодам):

'apple' < 'banana'  // true
'Яблоко' > 'Апельсин'  // true (Я > А)
'10' > '9'  // false! '1' < '9' в строковом сравнении
10 > 9      // true — числовое сравнение

Типичные ошибки

Ошибка 1: = вместо === (присваивание вместо сравнения)

let isAdmin = false
if (isAdmin = true) {  // Это присваивание! Всегда true!
  console.log('доступ открыт')  // выполнится всегда
}
// Правильно:
if (isAdmin === true) { ... }
// Или просто:
if (isAdmin) { ... }

Ошибка 2: Сравнивать число со строкой через ===

const input = '18'  // пришло из формы как строка
input === 18  // false — разные типы
Number(input) === 18  // true — правильно, преобразовали

Ошибка 3: Использовать == для null-проверок

const value = 0
if (value == false) console.log('пусто')  // выполнится! 0 == false
if (value === false) console.log('пусто') // не выполнится — правильно

В реальных проектах

Операторы сравнения — строительные блоки любой валидации: проверка форм, авторизация, фильтрация данных. Ошибка с == вместо === — классический источник багов, которые сложно найти.

Примеры

Система проверок при оформлении заказа

const user = {
  age: 20,
  balance: 3500,
  bonusPoints: 250,
  promoCode: 'SALE2025',
}

const movie = { minAge: 18, price: 299 }
const minOrderForBonus = 2000
const correctPromo = 'SALE2025'

// Проверки через строгое сравнение
const ageAllowed = user.age >= movie.minAge
console.log('Возраст ок:', ageAllowed)                    // true

const canAfford = user.balance >= movie.price
console.log('Денег хватает:', canAfford)                  // true

const promoValid = user.promoCode === correctPromo
console.log('Промокод верный:', promoValid)               // true

const bonusEligible = user.balance >= minOrderForBonus
console.log('Бонус за заказ:', bonusEligible)             // true

// Показываем почему === лучше ==
console.log('1000 == true:', 1000 == true)   // false (интересно!)
console.log('1 == true:', 1 == true)         // true (неожиданно?)
console.log('1 === true:', 1 === true)       // false (правильно!)

Задание

Ты разрабатываешь систему проверки для стриминга: пользователь 17 лет хочет смотреть фильм 18+. У него есть подписка и баланс 500 рублей, фильм стоит 299 руб. Напиши три проверки и выведи их результаты.

Подсказка

Для сравнения возраста: userAge >= minAge. Для проверки boolean-переменной: hasSubscription === true (или просто hasSubscription)

Загружаем среду выполнения...
Загружаем AI-помощника...