Что такое falsy-значения в JavaScript?

«Что такое falsy-значения в JavaScript?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JavaScript falsy-значение — это значение, которое приводится к false в булевом контексте (например, в условии if, при использовании логического оператора ! или в тернарном операторе).

Список всех 6 falsy-значений:

  1. false — булево значение ложь.
  2. 0 — число ноль (также -0, 0n (BigInt)).
  3. "" — пустая строка (также '', ``).
  4. null — отсутствие какого-либо значения объекта.
  5. undefined — неопределенное значение.
  6. NaN (Not a Number) — результат некорректной математической операции.

Примеры проверки в условиях:

// Все эти условия НЕ выполнятся (блок if будет пропущен)
if (false) { /* ... */ }
if (0) { /* ... */ }
if ("") { /* ... */ }
if (null) { /* ... */ }
if (undefined) { /* ... */ }
if (NaN) { /* ... */ }

// Практическое использование для проверки на наличие значения
function greetUser(name) {
  // Если name - falsy (undefined, "", null), используется значение по умолчанию
  const userName = name || 'Гость';
  console.log(`Привет, ${userName}!`);
}
greetUser(); // Привет, Гость!
greetUser("Анна"); // Привет, Анна!

Важные нюансы:

  • Все остальные значения являются truthy. Это включает неочевидные, такие как:
    • "0" (строка с нулем), "false" (непустая строка)
    • [] (пустой массив), {} (пустой объект)
    • function() {} (пустая функция)
  • Явное сравнение (===) строже, чем приведение типа. if (0 === false) вернет false, так как типы разные.
  • Для безопасной проверки на null или undefined используйте оператор нулевого слияния (??). Он возвращает правый операнд, только если левый — null или undefined (но не другие falsy-значения).
    const count = 0;
    console.log(count || 10); // 10 (потому что 0 - falsy) - может быть ошибкой!
    console.log(count ?? 10); // 0 (корректно, так как count не null/undefined)