> Какие значения являются falsy в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: SmartWay

Стек: JavaScript

> Пример ответа

Короткий ответ

В JavaScript falsy значения - это значения, которые при приведении к boolean дают false. Полный список: false, 0, -0, 0n (BigInt zero), "" (пустая строка), null, undefined, NaN. Все остальные значения, включая пустые объекты, массивы и функции, являются truthy.

Подробное объяснение

Falsy значения - это фундаментальная концепция языка, которая определяет поведение в условных конструкциях (if, while, тернарный оператор) и логических операторах (&&, ||, ??). Важно понимать, что falsy - это не то же самое, что false или "отсутствие значения". Это отдельная категория значений, которые при неявном приведении к boolean дают false.

Полный список falsy значений:

  1. false - логическое значение false
  2. 0 - число ноль (включая -0 и +0)
  3. 0n - BigInt ноль
  4. "" - пустая строка (включая '' и ``)
  5. null - отсутствие значения
  6. undefined - неопределённое значение
  7. NaN - Not-a-Number

Ключевой момент: пустой массив [], пустой объект {} и пустая функция function(){} - все они truthy, несмотря на то, что "выглядят пустыми". Это частая причина путаницы у разработчиков.

На практике

На практике понимание falsy значений критично для:

  • Проверки наличия значения: if (value) - но осторожно, так как 0 и "" тоже falsy
  • Логических операторов: const name = user.name || "default" - но 0 и "" будут заменены
  • Nullish coalescing: const count = user.count ?? 0 - работает только с null и undefined
  • Условного рендеринга в React: {count && <Component/>} - при count = 0 компонент не отрендерится, но отобразится 0

Для проверки на "реальное" наличие значения используйте строгие проверки: value !== null && value !== undefined или оператор ??.

Пример кода

JAVASCRIPT
// Все falsy значения
const falsyValues = [false, 0, -0, 0n, "", null, undefined, NaN];
falsyValues.forEach(value => {
console.log(Boolean(value)); // false для всех
});
// Проверка в условии
if (0) {
console.log("никогда не выполнится");
}
if ("") {
console.log("тоже не выполнится");
}
if ([]) {
console.log("выполнится - пустой массив truthy");
}
// Типичная ошибка с ||
const count = 0;
const result = count || 10;
console.log(result); // 10, хотя ожидали 0
// Правильное решение с ??
const correctResult = count ?? 10;
console.log(correctResult); // 0

Как отвечать на собеседовании

Начните с перечисления всех falsy значений, затем объясните механизм приведения к boolean. Подчеркните, что пустые структуры данных (объекты, массивы) - truthy. Покажите понимание практических последствий, особенно разницу между || и ??. Если спросят про document.all - упомяните, что это исторический артефакт, который ведёт себя как falsy, но это исключение.

Что проверяет интервьюер

Интервьюер проверяет:

  • Базовое знание языка: точный список falsy значений без ошибок
  • Понимание неявного приведения типов: как работает Boolean(), if, логические операторы
  • Практическое применение: знание подводных камней с || и ??
  • Внимательность к деталям: знание про -0, 0n, document.all
  • Умение объяснять: структурированный ответ с примерами

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

  • Забывают NaN или 0n в списке
  • Считают пустой массив или объект falsy - это не так
  • Путают falsy с "пустым" - "" falsy, но " " (пробел) truthy
  • Используют || для значений по умолчанию, когда нужен ?? - 0 и "" будут перезаписаны
  • Не знают про document.all - единственный falsy объект в спецификации
  • Считают, что "false" (строка) falsy - это truthy, так как это непустая строка

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью