Spec-Zone.ru › JavaScript

Булево значение

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Значения Boolean могут быть одним из двух: true или false, представляя истинностное значение логического утверждения.

Описание

Булевы значения обычно создаются с помощью операторов сравнения, операторов равенства и логического НЕ (!). Они также могут создаваться функциями, представляющими условия, например, Array.isArray(). Обратите внимание, что бинарные логические операторы, такие как && и ||, возвращают значения операндов, которые могут быть или не быть булевыми значениями.

Булевы значения обычно используются в проверке условий, например, в условиях для операторов if...else и while, в условном операторе (? :) или в качестве возвращаемого значения предиката для Array.prototype.filter().

Вам редко потребуется явно преобразовывать что-либо в булево значение, поскольку JavaScript делает это автоматически в булевых контекстах, поэтому вы можете использовать любое значение как булево, основываясь на его истинности. Также рекомендуется использовать if (condition) и if (!condition) вместо if (condition === true) или if (condition === false) в вашем собственном коде, чтобы воспользоваться этим соглашением. Однако убедиться, что значения, представляющие условия, всегда являются булевыми, может помочь прояснить замысел вашего кода.

// Do this:
// This always returns a boolean value
const isObject = (obj) => !!obj && typeof obj === "object";

// Or this:
const isObject = (obj) => Boolean(obj) && typeof obj === "object";

// Or this:
const isObject = (obj) => obj !== null && typeof obj === "object";

// Instead of this:
// This may return falsy values that are not equal to false
const isObject = (obj) => obj && typeof obj === "object";

Булевы примитивы и булевы объекты

Для преобразования небулевых значений в булевы используйте Boolean как функцию или оператор двойного НЕ. Не используйте конструктор Boolean() с new.

const good = Boolean(expression);
const good2 = !!expression;
const bad = new Boolean(expression); // don't use this!

Это потому, что все объекты, включая объект Boolean, обернутое значение которого равно false, являются истинными (truthy) и оцениваются как true в таких местах, как условные операторы. (См. также раздел булево приведение типов ниже.)

if (new Boolean(true)) {
  console.log("This log is printed.");
}

if (new Boolean(false)) {
  console.log("This log is ALSO printed.");
}

const myFalse = new Boolean(false); // myFalse is a Boolean object (not the primitive value false)
const g = Boolean(myFalse); // g is true
const myString = new String("Hello"); // myString is a String object
const s = Boolean(myString); // s is true

Предупреждение: Вам редко следует использовать Boolean как конструктор.

Булево приведение типов

Многие встроенные операции, ожидающие булевы значения, сначала приводят свои аргументы к булевым значениям. Операция может быть обобщена следующим образом:

  • Булевы значения возвращаются как есть.
  • undefined превращается в false.
  • null превращается в false.
  • 0, -0 и NaN превращаются в false; другие числа превращаются в true.
  • 0n превращается в false; другие BigInts превращаются в true.
  • Пустая строка "" превращается в false; другие строки превращаются в true.
  • Symbols превращаются в true.
  • Все объекты становятся true.

Примечание: Устаревшее поведение заставляет document.all возвращать false при использовании в качестве булева значения, несмотря на то, что это объект. Это свойство является устаревшим и нестандартным, и его не следует использовать.

Примечание: В отличие от других преобразований типов, таких как строковое приведение типов или числовое приведение типов, булево приведение типов не пытается преобразовать объекты в примитивы путем вызова пользовательских методов.

Другими словами, существует лишь небольшое количество значений, которые приводятся к false — они называются ложными (falsy) значениями. Все остальные значения называются истинными (truthy) значениями. Истинность значения важна при использовании логических операторов, условных операторов или в любом булевом контексте.

Есть два способа добиться того же эффекта в JavaScript.

  • Двойное НЕ: !!x дважды инвертирует x, что преобразует x в булево значение, используя тот же алгоритм, что и выше.
  • Функция Boolean(): Boolean(x) использует тот же алгоритм, что и выше, для преобразования x.

Обратите внимание, что истинность — это не то же самое, что нестрогое равенство true или false.

if ([]) {
  console.log("[] is truthy");
}
if ([] == false) {
  console.log("[] == false");
}
// [] is truthy
// [] == false

[] является истинным (truthy), но также нестрого равно false. Оно является истинным (truthy), потому что все объекты являются истинными (truthy). Однако при сравнении с false, который является примитивом, [] также преобразуется в примитив, который равен "" с помощью Array.prototype.toString(). Сравнение строк и булевых значений приводит к тому, что оба преобразуются в числа, и оба становятся 0, поэтому [] == false равно true. В общем, ложность (falsiness) и == false различаются в следующих случаях:

  • NaN, undefined и null являются ложными (falsy), но не нестрого равны false.
  • "0" (и другие строковые литералы, которые не равны "", но приводятся к 0) является истинным (truthy), но нестрого равно false.
  • Объекты всегда являются истинными (truthy), но их примитивное представление может быть нестрого равно false.

Истинные (truthy) значения еще менее вероятно будут нестрого равны true. Все значения либо истинны (truthy), либо ложны (falsy), но большинство значений нестрого не равны ни true, ни false.

Конструктор

Boolean()
Создает объекты Boolean. При вызове в качестве функции он возвращает примитивные значения типа Boolean.

Свойства экземпляра

Эти свойства определены в Boolean.prototype и являются общими для всех экземпляров Boolean.

Boolean.prototype.constructor
Функция-конструктор, которая создала объект-экземпляр. Для экземпляров Boolean начальное значение — это конструктор Boolean.

Методы экземпляра

Boolean.prototype.toString()
Возвращает строку true или false в зависимости от значения объекта. Переопределяет метод Object.prototype.toString().
Boolean.prototype.valueOf()
Возвращает примитивное значение объекта Boolean. Переопределяет метод Object.prototype.valueOf().

Примеры

Создание ложных значений

const bNoParam = Boolean();
const bZero = Boolean(0);
const bNull = Boolean(null);
const bEmptyString = Boolean("");
const bfalse = Boolean(false);

Создание истинных значений

const btrue = Boolean(true);
const btrueString = Boolean("true");
const bfalseString = Boolean("false");
const bSuLin = Boolean("Su Lin");
const bArrayProto = Boolean([]);
const bObjProto = Boolean({});

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-boolean-objects

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
Boolean
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
Boolean
1
12
1
4
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
toString
1
12
1
4
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
valueOf
1
12
1
4
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • Boolean
  • Булевы примитивы
  • Булев тип данных в Википедии

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API