← Назад к вопросам
Какие типы JS приводятся к False?
2.0 Middle🔥 151 комментариев
#JavaScript Core#Браузер и сетевые технологии
Комментарии (1)
🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Приведение к false в JavaScript (Falsy значения)
В JavaScript существует строго определённый набор значений, которые при приведении к булевому типу (boolean) преобразуются в false. Эти значения называются "falsy" (ложными). Все остальные значения считаются "truthy" (истинными).
Полный список falsy значений:
false- булевое значение false0- число ноль (только0, не0.0или0x0, но они тоже0)-0- отрицательный ноль0n- BigInt ноль (0n)""- пустая строка (также''и``)null- отсутствие значенияundefined- неопределённое значениеNaN- "Not a Number" (результат некорректных математических операций)
Практическая демонстрация:
// Проверка всех falsy значений
const falsyValues = [false, 0, -0, 0n, "", null, undefined, NaN];
falsyValues.forEach(value => {
console.log(`Boolean(${JSON.stringify(value)}) =`, Boolean(value));
// Все выведут: false
});
// Примеры truthy значений для сравнения
const truthyExamples = [true, 1, -1, 42, "hello", "0", "false", [], {}, function(){}];
Особенности и нюансы:
Числовые значения:
- Только
0и-0являются falsy. Все остальные числа (включая отрицательные, дробные, Infinity) - truthy:
console.log(Boolean(0)); // false
console.log(Boolean(-0)); // false
console.log(Boolean(42)); // true
console.log(Boolean(-3.14)); // true
console.log(Boolean(Infinity)); // true
Строковые значения:
- Только пустая строка (
"",'',``) является falsy:
console.log(Boolean("")); // false
console.log(Boolean('')); // false
console.log(Boolean(``)); // false
console.log(Boolean(" ")); // true (пробел - не пустая строка!)
console.log(Boolean("0")); // true
console.log(Boolean("false")); // true
Объекты и массивы:
- Все объекты, включая пустые массивы и объекты, являются truthy:
console.log(Boolean([])); // true
console.log(Boolean({})); // true
console.log(Boolean(new Date())); // true
console.log(Boolean(/regex/)); // true
Особые случаи:
// NaN всегда falsy, даже если получен разными способами
console.log(Boolean(NaN)); // false
console.log(Boolean(0/0)); // false
console.log(Boolean(Number("не число"))); // false
// null и undefined
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
// BigInt
console.log(Boolean(0n)); // false
console.log(Boolean(1n)); // true
Практическое применение:
Условные операции:
// Проверка на наличие значения
function processValue(value) {
if (value) { // Не пройдут: false, 0, "", null, undefined, NaN
console.log("Обрабатываем значение:", value);
return value * 2;
}
return "Нет значения";
}
// Безопасный доступ к свойствам
const user = {};
const username = user.name || "Гость"; // "Гость", т.к. user.name = undefined (falsy)
Фильтрация массивов:
const mixedArray = [0, 1, "hello", "", null, 42, undefined, NaN];
const truthyArray = mixedArray.filter(Boolean);
console.log(truthyArray); // [1, "hello", 42]
Паттерны использования:
- Установка значений по умолчанию через
||(или??для null/undefined) - Валидация входных данных в функциях
- Условный рендеринг в React/Vue
- Краткие условия в циклах и условиях
Важное замечание про оператор ?? (Nullish Coalescing):
// Оператор || проверяет на falsy
console.log(0 || "default"); // "default" (0 - falsy)
// Оператор ?? проверяет только на null/undefined
console.log(0 ?? "default"); // 0 (0 не null и не undefined)
Знание falsy значений критически важно для написания корректного и предсказуемого JavaScript-кода, особенно при работе с условными операторами, валидацией данных и установкой значений по умолчанию.