Boolean() преобразует значение в true или false.
Это стандартный и явный способ получить логическое значение из строки, числа, null, undefined, массива, объекта или другого значения.
Обычно Boolean() используют, когда нужно не просто проверить условие, а именно получить результат типа boolean.
Синтаксис
Boolean(value)
value может быть почти любым значением.
Если вызвать Boolean() без аргумента, результатом будет false.
console.log(Boolean()); // false
Что делает Boolean()
Boolean() приводит значение к логическому типу.
console.log(Boolean(1)); // true
console.log(Boolean(0)); // false
console.log(Boolean("hello")); // true
console.log(Boolean("")); // false
Результат всегда имеет тип boolean.
const result = Boolean("JavaScript");
console.log(result); // true
console.log(typeof result); // "boolean"
Falsy-значения
В JavaScript есть несколько значений, которые после приведения становятся false. Их называют falsy.
false0и-00n""nullundefinedNaN
Все остальные значения становятся true.
console.log(Boolean(false)); // false
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false
Строки
Для строк правило простое: пустая строка даёт false, любая непустая строка даёт true.
console.log(Boolean("")); // false
console.log(Boolean("hello")); // true
console.log(Boolean("0")); // true
console.log(Boolean("false")); // true
console.log(Boolean(" ")); // true
Это важный момент: строка "0" и строка "false" не считаются ложными, потому что они не пустые.
Числа и BigInt
Для чисел false дают только 0, -0 и NaN. Остальные числа становятся true.
console.log(Boolean(0)); // false
console.log(Boolean(-0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(10)); // true
console.log(Boolean(-5)); // true
console.log(Boolean(3.14)); // true
С BigInt логика такая же:
console.log(Boolean(0n)); // false
console.log(Boolean(10n)); // true
null и undefined
Оба значения при приведении дают false.
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
Именно поэтому проверки вроде if (value) часто отсекают и null, и undefined.
Массивы и объекты
Пустой массив и пустой объект многим кажутся “пустыми”, но для JavaScript это всё равно объекты, а объекты считаются truthy.
console.log(Boolean([])); // true
console.log(Boolean({})); // true
console.log(Boolean([0])); // true
console.log(Boolean({ a: 1 })); // true
Из-за этого Boolean([]) и Boolean({}) не подходят для проверки “есть ли элементы” или “есть ли свойства”.
Если нужен именно такой смысл, проверяют уже не сам объект, а его содержимое:
const items = [];
const user = {};
console.log(items.length > 0); // false
console.log(Object.keys(user).length > 0); // false
Boolean() и условия
В if, while, тернарном операторе и логических выражениях JavaScript и так приводит значение к boolean.
const value = "hello";
if (value) {
console.log("Условие выполнится");
}
Поэтому if (value) и if (Boolean(value)) в простых условиях обычно означают одно и то же.
Boolean() полезнее там, где нужно сохранить результат именно как true или false:
const input = " text ";
const hasText = Boolean(input.trim());
console.log(hasText); // true
Boolean() и двойное отрицание !!
Сокращение !!value делает то же самое, что и Boolean(value).
console.log(Boolean("JS")); // true
console.log(!!"JS"); // true
console.log(Boolean(0)); // false
console.log(!!0); // false
Оба варианта корректны, но Boolean(value) обычно читается понятнее, особенно для начинающих.
Boolean() и filter(Boolean)
Иногда Boolean передают как колбэк в filter(), чтобы убрать falsy-значения.
const values = ["JavaScript", "", null, "DOM", undefined];
const result = values.filter(Boolean);
console.log(result); // ["JavaScript", "DOM"]
Это удобно, но важно понимать смысл: такой код удалит не только null и undefined, но и 0, false, NaN и пустые строки.
const values = [0, 1, 2, "", "text"];
console.log(values.filter(Boolean)); // [1, 2, "text"]
Если 0 или false для вас валидные значения, лучше написать более точную проверку.
Boolean() и new Boolean()
Это очень важное различие.
const a = Boolean(false);
const b = new Boolean(false);
console.log(typeof a); // "boolean"
console.log(typeof b); // "object"
Boolean() без new возвращает обычное логическое значение.
new Boolean() создаёт объект-обёртку, и в обычном коде это почти никогда не нужно.
Почему new Boolean() обычно не используют
Объект-обёртка ведёт себя не так, как обычный boolean.
const value = new Boolean(false);
if (value) {
console.log("Условие выполнится");
}
Хотя внутри лежит false, сам объект считается truthy.
Из-за этого new Boolean() легко создаёт путаницу и странные баги в условиях.
Когда это полезно
Boolean() удобно использовать, когда:
- нужно явно получить
trueилиfalse - результат потом будет сохранён в переменную, возвращён из функции или отправлен дальше
- хочется сделать приведение типа явным, а не полагаться на неявную логику условия
Пример:
function hasAccess(userRole) {
return Boolean(userRole);
}
console.log(hasAccess("admin")); // true
console.log(hasAccess("")); // false
Частые ошибки
Думать, что строка "false" даёт false
console.log(Boolean("false")); // true
Это строка, а не логическое значение. Она непустая, значит результат будет true.
Думать, что пустой массив или объект дают false
console.log(Boolean([])); // true
console.log(Boolean({})); // true
Для проверки пустоты массива или объекта нужны отдельные проверки.
Использовать new Boolean()
const value = new Boolean(false);
В обычном коде почти всегда лучше так:
const value = Boolean(false);
Слишком полагаться на truthy/falsy там, где нужна точность
const value = 0;
if (!value) {
console.log("Сработает");
}
Если 0 - это допустимое значение, такая проверка может быть ошибкой. В таких местах лучше писать более точное условие.
Быстрая памятка
Boolean(value)преобразует значение вtrueилиfalse- результат всегда имеет тип
boolean - falsy-значений немного, всё остальное становится truthy
Boolean([])иBoolean({})даютtrueBoolean(value)и!!valueдают одинаковый результатnew Boolean()создаёт объект и обычно не нужен
Коротко
Boolean() - это стандартный способ явно преобразовать значение в логический тип в JavaScript. Главное, что стоит запомнить: пустая строка, 0, null, undefined и NaN дают false, но непустые строки, массивы и объекты дают true, а new Boolean() почти всегда лучше избегать.