Boolean: примеры (JAVASCRIPT)

Функция Boolean в JavaScript: примеры использования и тонкости
Раздел: Основные типы, Конструкторы
Boolean(value (any)): boolean

Функция Boolean: описание и основы

Функция Boolean() является глобальным объектом-конструктором и одновременно функцией преобразования типов. Её основное назначение – приведение переданного значения к примитивному логическому типу (true или false).

Функция используется для явного преобразования любого значения в соответствующий ему булевый эквивалент. Это часто требуется при проверках условий, валидации данных или приведения входных данных к единому логическому типу.

Функция принимает один аргумент – value (значение), которое нужно преобразовать. Аргумент может быть любого типа: примитивного (строка, число, bigint, символ, null, undefined, логическое значение) или объектного (объект, массив, функция и т.д.).

Возвращаемое значение всегда является примитивом типа boolean (true или false) по следующим правилам:

  • Ложные (falsy) значения, преобразующиеся в false: false, 0, -0, 0n (BigInt), пустая строка (""), null, undefined, NaN.
  • Истинные (truthy) значения, преобразующиеся в true: все остальные значения, включая объекты, массивы (даже пустые), функции, строки (кроме пустой), числа (кроме 0, -0, NaN), символы, Infinity, new Boolean(false).

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

Преобразование основных примитивных и объектных типов:

// Ложные (falsy) значения
console.log(Boolean(false));
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
false
false
false
false
false
false
// Истинные (truthy) значения
console.log(Boolean(true));
console.log(Boolean(42));
console.log(Boolean('Привет'));
console.log(Boolean([])); // Пустой массив
console.log(Boolean({})); // Пустой объект
console.log(Boolean(function(){})); // Пустая функция
true
true
true
true
true
true

Похожие методы в JavaScript

Двойное логическое НЕ (!!) – распространённый идиоматический способ приведения к boolean. Он эквивалентен вызову Boolean(), но является оператором, а не функцией. !!value работает быстрее и короче.

const value = 'текст';
console.log(!!value); // true
console.log(!!0); // false
true
false

Оператор нулевого слияния (??) и логические операторы (&&, ||) также используют концепцию truthy/falsy, но служат другим целям (возвращают значение операнда, а не преобразованное boolean). Использование Boolean() предпочтительно, когда требуется явно подчеркнуть преобразование типа и получить строго логическое значение.

Типичные ошибки и недочёты

1. Путаница между конструктором Boolean и функцией преобразования: new Boolean() возвращает объект (который всегда truthy), а не примитив.

let objBool = new Boolean(false); // Объект Boolean
let primitiveBool = Boolean(false); // Примитив false
if (objBool) {
    console.log('Объект Boolean - truthy!'); // Выполнится
}
if (primitiveBool) {
    console.log('Это не выполнится');
}
Объект Boolean - truthy!

2. Попытка прямого преобразования неопределённой переменной без проверки на существование безопасна, но может вводить в заблуждение, если ожидается, что только null или undefined дадут false, а 0 или пустая строка – true.

3. Излишнее использование: В условиях if (Boolean(value)) избыточно, так как if (value) уже выполняет неявное преобразование по тем же правилам.

История изменений

Функция Boolean() присутствует в JavaScript с первых версий (ECMAScript 1). Её семантика преобразования значений остаётся неизменной на протяжении всех версий языка для обеспечения обратной совместимости. Добавление нового примитивного типа BigInt в ES2020 расширило список falsy значений, включив в него 0n.

Расширенные и нестандартные примеры

1. Фильтрация массива с удалением всех falsy-значений.

Пример javascript
const mixedArray = [0, 1, false, 2, '', 3, null, undefined, 4, NaN];
const truthyArray = mixedArray.filter(Boolean); // Boolean передаётся как callback
console.log(truthyArray);
[1, 2, 3, 4]

2. Сравнение преобразования объектов, классов и экзотических объектов.

Пример javascript
console.log(Boolean(document.all)); // Устаревший HTMLAllCollection - falsy (особенность)
console.log(Boolean(new Date())); // Объект Date - true
console.log(Boolean(Symbol('id'))); // Символ - true
console.log(Boolean(1n)); // BigInt, не равный 0n - true
false (в некоторых браузерах)
true
true
true

3. Использование для строгой проверки заполненности строки (исключая пробелы).

Пример javascript
function isNonEmptyString(str) {
    return Boolean(str && str.trim());
}
console.log(isNonEmptyString('   ')); // false
console.log(isNonEmptyString(' abc ')); // true
false
true

4. Преобразование числовых флагов или битовых масок в логические значения.

Пример javascript
const PERMISSION_READ = 1; // 0b001
const PERMISSION_WRITE = 2; // 0b010
const userPermissions = 5; // 0b101 (чтение + выполнение)
const canRead = Boolean(userPermissions & PERMISSION_READ);
const canWrite = Boolean(userPermissions & PERMISSION_WRITE);
console.log(canRead, canWrite);
true false

5. Явное задание значения по умолчанию для логической переменной из внешнего источника.

Пример javascript
function getConfigValue(rawValue) {
    // Гарантированно возвращает тип boolean
    return Boolean(rawValue);
}
console.log(getConfigValue('on')); // true
console.log(getConfigValue(0)); // false
true
false

Аналоги в других языках программирования

PHP: Функция boolval() (или приведение типа (bool)). Преобразование похоже на JavaScript, но пустой массив в PHP преобразуется в false.

echo boolval(0); // false
echo boolval([]); // false (отличие от JS!)

Python: Функция bool(). Ложными считаются None, False, 0, 0.0, пустые коллекции ("", [], {}, ()). Поведение с пустыми коллекциями ближе к PHP, чем к JS.

print(bool([])) # False
print(bool({})) # False
False
False

MySQL: В логическом контексте (WHERE, IF) происходит неявное преобразование. Явное можно сделать через операторы сравнения (например, column IS TRUE).

C/C++: Языки со статической типизацией. Любое ненулевое значение (число, указатель) в условии трактуется как истина, ноль – как ложь. Явного оператора преобразования как функции нет.

JS Boolean function comments

En
Boolean Converts a value to a boolean