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

Какие типы JS приводятся к False?

2.0 Middle🔥 151 комментариев
#JavaScript Core#Браузер и сетевые технологии

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

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

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

Приведение к false в JavaScript (Falsy значения)

В JavaScript существует строго определённый набор значений, которые при приведении к булевому типу (boolean) преобразуются в false. Эти значения называются "falsy" (ложными). Все остальные значения считаются "truthy" (истинными).

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

  1. false - булевое значение false
  2. 0 - число ноль (только 0, не 0.0 или 0x0, но они тоже 0)
  3. -0 - отрицательный ноль
  4. 0n - BigInt ноль (0n)
  5. "" - пустая строка (также '' и ``)
  6. null - отсутствие значения
  7. undefined - неопределённое значение
  8. 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]

Паттерны использования:

  1. Установка значений по умолчанию через || (или ?? для null/undefined)
  2. Валидация входных данных в функциях
  3. Условный рендеринг в React/Vue
  4. Краткие условия в циклах и условиях

Важное замечание про оператор ?? (Nullish Coalescing):

// Оператор || проверяет на falsy
console.log(0 || "default");  // "default" (0 - falsy)

// Оператор ?? проверяет только на null/undefined
console.log(0 ?? "default");  // 0 (0 не null и не undefined)

Знание falsy значений критически важно для написания корректного и предсказуемого JavaScript-кода, особенно при работе с условными операторами, валидацией данных и установкой значений по умолчанию.

Какие типы JS приводятся к False? | PrepBro