> Какие значения являются 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 значений:
false- логическое значение false0- число ноль (включая-0и+0)0n- BigInt ноль""- пустая строка (включая''и``)null- отсутствие значенияundefined- неопределённое значение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, так как это непустая строка
> Похожие задачи по frontend
Вернёт ли метод map в JavaScript новый массив с новыми объектами или с теми же старыми объектами при добавлении свойства к объектам?
Что такое генераторы в JavaScript и для чего они используются
Когда в JavaScript проверяются типы?
Опиши сложный кейс или задачу, с которой ты столкнулся недавно
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью