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); // falsetrue 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-значений.
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. Сравнение преобразования объектов, классов и экзотических объектов.
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 - truefalse (в некоторых браузерах) true true true
3. Использование для строгой проверки заполненности строки (исключая пробелы).
function isNonEmptyString(str) {
return Boolean(str && str.trim());
}
console.log(isNonEmptyString(' ')); // false
console.log(isNonEmptyString(' abc ')); // truefalse true
4. Преобразование числовых флагов или битовых масок в логические значения.
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. Явное задание значения по умолчанию для логической переменной из внешнего источника.
function getConfigValue(rawValue) {
// Гарантированно возвращает тип boolean
return Boolean(rawValue);
}
console.log(getConfigValue('on')); // true
console.log(getConfigValue(0)); // falsetrue 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({})) # FalseFalse False
MySQL: В логическом контексте (WHERE, IF) происходит неявное преобразование. Явное можно сделать через операторы сравнения (например, column IS TRUE).
C/C++: Языки со статической типизацией. Любое ненулевое значение (число, указатель) в условии трактуется как истина, ноль – как ложь. Явного оператора преобразования как функции нет.