← Назад к вопросам

Для чего используется тройное равно?

1.3 Junior🔥 231 комментариев
#Node.js и JavaScript

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Для чего используется тройное равно (===)

Определение

Тройное равно (===) в JavaScript — это оператор строгого сравнения (strict equality). Он сравнивает как значение, так и тип без автоматического преобразования типов.

Двойное равно (==) — это оператор нестрогого сравнения (loose equality), который преобразует типы перед сравнением.

Разница между === и ==

Двойное равно (==) — опасен!

5 == "5"        // true ❌ Преобразует string в number
0 == false      // true ❌ false преобразуется в 0
"" == false     // true ❌ Пустая строка преобразуется в false
null == undefined // true ❌ Считаются равными

Тройное равно (===) — правильно!

5 === "5"       // false ✅ Разные типы
0 === false     // false ✅ Разные типы
"" === false    // false ✅ Разные типы
null === undefined // false ✅ Разные типы

Как работает == (автоматическое преобразование)

const num = 5;
const str = "5";
console.log(num == str);  // true (str преобразуется в 5)
console.log(num === str); // false (типы разные)

Практические примеры в Node.js

Проверка пользовательского ввода:

const userId = req.body.userId; // "0" (string)

if (userId == 0) {
  // Выполнится: "0" преобразуется в 0
  console.log("Admin user");
}

if (userId === 0) {
  // НЕ выполнится: "0" это строка, не число
  console.log("Admin user");
}

// Правильно:
const id = parseInt(userId, 10);
if (id === 0) {
  console.log("Admin user");
}

Проверка null/undefined:

const value = req.query.param;

if (value == null) {
  // true и для null, и для undefined ❌
}

if (value === null || value === undefined) {
  // Правильная проверка ✅
}

// Или используй nullish coalescing
const result = value ?? "default";

Best Practices

ВСЕГДА используй === в production коде

  • Сравнивай одни типы: 5 === 5, "5" === "5"
  • Преобразуй явно: const num = parseInt(str, 10)
  • Используй TypeScript для типизации
  • Настрой ESLint: eqeqeq: ["error", "always"]

Избегай == везде

Выводы

=== — это стандарт современного JavaScript/TypeScript. Он предотвращает странные баги с неявным преобразованием типов. Никогда не используй == в production коде, потому что это источник трудноуловимых ошибок. TypeScript с strict mode тоже помогает предотвратить эти проблемы на этапе компиляции.