Сравнение
Присваивание наполнило именованную коробку. Теперь спрашиваете, что внутри: то же самое? больше? уже достаточно? Ответ всегда да или нет — true или false. Эти вопросы — операторы сравнения. Позже они войдут в условия; здесь вы учитесь читать знаки и доверять boolean, который они возвращают.
Что такое сравнение?
Сравнение берёт два операнда и возвращает boolean. Оно не кладёт новое число в имя слева (это было =). После 5 === 5 результат true. После 5 === "5" — false, потому что типы разные. Этот boolean можно вывести в консоль, сохранить в переменной или написать на странице.
Операторы с одного взгляда
📊 Повседневные операторы сравнения
| Оператор | Спрашивает | Типичный результат |
|---|---|---|
=== |
то же значение и тип? | 5 === 5 → true |
!== |
другое значение или тип? | 5 !== "5" → true |
< |
строго меньше? | 3 < 10 → true |
> |
строго больше? | 3 > 10 → false |
<= |
меньше или равно? | 10 <= 10 → true |
>= |
больше или равно? | 9 >= 10 → false |
Держите лист под рукой. == и != тоже есть, но в этом курсе это ловушка новичка — они могут привести типы перед сравнением. Держитесь === / !==, пока отдельный урок не разберёт принуждение типов.
console.log(7 === 7);
console.log(7 === "7");
console.log(7 !== 7);
console.log(7 !== "7");
let n = 7;
console.log(n === 7);
=== проверяет и значение, и тип
Три знака равенства — значение по умолчанию для новичка. Обе стороны должны совпасть по значению и типу. Число 7 — это не текст "7".
Консоль печатает true, false, false, true, true. Последняя строка показывает: сохранённое число по-прежнему строго сравнивается с литералом 7. !== — обратный вопрос: «они не одинаковы?» — здесь 7 !== "7" даёт true, потому что типы разные.
Почему новичку лучше обойти ==
Два знака равенства могут превратить строку в число (или наоборот) и только потом решить. Удобно выглядит, пока не спрячет ошибку.
console.log(7 == "7");
console.log(7 === "7");
console.log(0 == false);
console.log(0 === false);
console.log("" == 0);
console.log("" === 0);
7 == "7" становится true, хотя одна сторона — текст. 7 === "7" остаётся false. Ещё 0 == false и "" == 0 дают true — шумные сюрпризы. Строгая проверка честна: число, boolean и пустая строка — разное. В этом курсе предпочитайте ===.
Ранжирование чисел
< > <= >= ставят числа по порядку. Равенство считается да для <= и >=.
console.log(3 < 10);
console.log(3 > 10);
console.log(10 <= 10);
console.log(9 >= 10);
let score = 80;
console.log(score >= 60);
Получаете true, false, true, false, true. Последняя строка — повседневный вопрос: «очков хватает?» Если нужно имя для ответа, сохраните boolean.
let score = 80;
let pass = score >= 60;
console.log(pass);
let age = 17;
let adult = age >= 18;
console.log(adult);
pass равен true (80 проходит 60). adult равен false (17 не дотягивает до 18). Сравнение уже дало boolean — вы только дали ему имя.
console.log("A" < "B");
console.log("B" < "A");
console.log("apple" === "apple");
console.log("Apple" === "apple");
console.log("10" < "9");
У текста словарный порядок
Строки сравниваются посимвольно, как словарь — не как человеческий «размер». "A" < "B" это true. Заглавная не равна строчной ("Apple" === "apple" — false). Цифры в кавычках тоже живут по правилам текста: "10" < "9" может быть true, потому что "1" идёт раньше "9". Преобразуйте через Number(), если имели в виду числовой ранг.
Показать проверку на странице
Посчитайте boolean и напишите короткую метку на странице.
<!DOCTYPE html>
<html>
<head>
<title>Comparison — page check</title>
</head>
<body>
<p id="out">…</p>
<script>
let age = 18;
let adult = age >= 18;
let box = document.getElementById("out");
box.textContent = "adult=" + adult;
</script>
</body>
</html>
age равен 18, поэтому adult — true, и страница показывает adult=true. Поставьте age в 17, обновите — должно быть adult=false. Дальше ветвление с if; это демо только печатает да/нет.
Попробуйте сами
- Выведите
8 === 8и8 === "8". - Выведите
8 !== "8"и8 !== 8. - Положите
4 == "4"рядом с4 === "4"и заметьте разницу. - Сохраните
let pts = 50и выведитеpts >= 60. - Выведите
"cat" === "cat"и"Cat" === "cat". - В HTML-демо смените только
age, обновите, прочитайте новый текстadult=.
Частые ошибки
- Писать
=, когда имелось в виду===(это сохраняет, не спрашивает) - Брать
==, потому что «иногда работает» — оно ещё и приводит типы - Ранжировать строки из цифр как числа (
"10" < "9") - Забывать, что сравнение уже возвращает boolean — не оборачивайте вручную в
true/false - Смешивать это семейство с логическими операторами (
&&||) — те объединяют да/нет; следующий урок
Кратко
- Сравнение задаёт вопрос и возвращает
trueилиfalse - Предпочитайте
===и!==(значение и тип) - Ранжируйте
<><=>=; равенство входит в<=и>= - Строки идут в словарном порядке, включая странные результаты с цифрами-текстом
- Не берите
==/!=как значение по умолчанию для новичка - Дальше: логические операторы — сочетать несколько да/нет через
&&,||и!
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху