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

Что выдаст true при преобразовании bool значения в JS?

1.0 Junior🔥 152 комментариев
#JavaScript Core

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

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

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

Полный ответ: Преобразование в Boolean (Truthy / Falsy) в JavaScript

В JavaScript при явном преобразовании с помощью Boolean(value) или неявном в логическом контексте (if, while, логические операторы &&, ||, !), все значения преобразуются либо в true (truthy), либо в false (falsy).

Явное преобразование

console.log(Boolean('Hello')); // true
console.log(Boolean(42));      // true
console.log(Boolean([]));      // true
console.log(Boolean({}));      // true
console.log(Boolean(0));       // false
console.log(Boolean(''));      // false
console.log(Boolean(null));    // false

Список Falsy-значений (преобразуются в false)

В JavaScript всего 8 falsy-значений. Любое другое значение является truthy:

// Все 8 falsy-значений:
console.log(Boolean(false));    // false - очевидно
console.log(Boolean(0));        // false - число ноль
console.log(Boolean(-0));       // false - отрицательный ноль
console.log(Boolean(0n));       // false - BigInt ноль
console.log(Boolean(''));       // false - пустая строка
console.log(Boolean(null));     // false
console.log(Boolean(undefined));// false
console.log(Boolean(NaN));      // false - Not a Number

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

  • '0', 'false', ' ' (строка с пробелом) — это truthy, так как это непустые строки
  • Пустые массивы [] и объекты {}truthy, что иногда сбивает с толку
  • Функции — всегда truthy

Примеры Truthy-значений (преобразуются в true)

// Все эти значения преобразуются в true:
console.log(Boolean(true));           // true
console.log(Boolean(42));             // true - любое ненулевое число
console.log(Boolean(-10));            // true - отрицательные числа тоже
console.log(Boolean(3.14));           // true - дробные числа
console.log(Boolean(Infinity));       // true
console.log(Boolean(-Infinity));       // true
console.log(Boolean('0'));            // true - непустая строка
console.log(Boolean('false'));        // true - непустая строка
console.log(Boolean(' '));            // true - строка с пробелом
console.log(Boolean([]));             // true - пустой массив
console.log(Boolean([1, 2, 3]));      // true - непустой массив
console.log(Boolean({}));             // true - пустой объект
console.log(Boolean({a: 1}));         // true - непустой объект
console.log(Boolean(function() {}));  // true - любая функция
console.log(Boolean(new Date()));     // true - объекты даты
console.log(Boolean(/regex/));        // true - регулярные выражения
console.log(Boolean(Symbol()));       // true - символы
console.log(Boolean(BigInt(123)));    // true - BigInt (кроме 0n)

Практическое применение в условиях

// Проверка наличия значения
function processInput(input) {
    if (input) { // input преобразуется в boolean
        console.log('Обрабатываем:', input);
        return true;
    }
    console.log('Нет данных');
    return false;
}

processInput('текст'); // "Обрабатываем: текст", возвращает true
processInput('');      // "Нет данных", возвращает false
processInput(0);       // "Нет данных", возвращает false
processInput([]);      // "Обрабатываем: []", возвращает true (!)

Операторы двойного отрицания (!!) для быстрого преобразования

const value = 'some text';
const boolValue = !!value; // true

// Эквивалентно:
const boolValue2 = Boolean(value); // true

Особые случаи и частые ошибки

  1. Пустые массивы и объекты:

    if ([]) {
        console.log('Это выполнится!'); // Массив truthy, даже пустой
    }
    
    if ([].length) {
        console.log('А это нет!'); // 0 - falsy
    }
    
  2. Сравнение с false без преобразования:

    const value = [];
    console.log(value == false);  // true (!) - из-за приведения типов
    console.log(value === false); // false - строгое сравнение
    
  3. Логические операторы возвращают исходные значения:

    console.log(0 && 'text');  // 0 (а не false)
    console.log('text' || 'default'); // 'text' (а не true)
    

Заключение: Понимание механизма truthy/falsy критически важно для написания корректных условий в JavaScript. Запомните 8 falsy-значений, а все остальное — truthy. Особое внимание уделяйте тому, что пустые массивы [] и объекты {} всегда truthy, что может приводить к неочевидному поведению, если вы ожидаете проверки на "пустоту" через простое условие if (value).