Boolean
Об'єкт Boolean
(булів) представляє логічне значення: true
(істину) або false
(хибу).
Опис
Булеві примітиви та об'єкти Boolean
Для перетворення небулевих значень на булеві слід користуватися Boolean
як функцією або оператором подвійного НЕ. Не слід використовувати конструктор Boolean()
з new
.
const good = Boolean(expression);
const good2 = !!expression;
const bad = new Boolean(expression); // не користуйтеся цим!
Це пов'язано з тим, що всі об'єкти, включно з об'єктом Boolean
, у який загорнуто значення false
, є істинними і в умовних інструкціях обчислюються як true
. (Див. також розділ зведення до булевого нижче.)
if (new Boolean(true)) {
console.log("Це виведення – друкується.");
}
if (new Boolean(false)) {
console.log("Це виведення – ТАКОЖ друкується.");
}
const myFalse = new Boolean(false); // myFalse – це об'єкт Boolean (а не примітивне значення false)
const g = Boolean(myFalse); // g дорівнює true
const myString = new String("Привіт"); // myString – це об'єкт String
const s = Boolean(myString); // s дорівнює true
Застереження: Використовувати
Boolean
як конструктор повинно доводитись нечасто.
Зведення до булевого
Чимало вбудованих операцій, що очікують на булеві значення, зводять свої аргументи до булевих. Ця операція може бути підсумована отак:
- Булеві значення повертаються як є.
undefined
стаєfalse
.null
стаєfalse
.0
,-0
іNaN
стаютьfalse
, а решта чисел –true
.0n
стаєfalse
, а решта значень BigInt –true
.- Порожній рядок
""
стаєfalse
, а інші рядки –true
. - Символи стають
true
. - Усі об'єкти – стають
true
.
Примітка: Історична логіка змушує
document.all
повертатиfalse
, коли вживається як булеве значення, всупереч тому, що це об'єкт. Ця властивість є історичною та нестандартною, її не варто використовувати.
Примітка: На відміну від інших перетворень типів, як то зведення до рядка чи зведення до числа, зведення до булевого не намагається перетворювати об'єкти на примітиви.
Інакше кажучи, є вельми невелика кількість значень, що зводяться до false
, — вони звуться хибними значеннями. Всі решта – звуться істинними значеннями. Істинність значення – важлива, коли воно використовується з логічними операторами, умовними інструкціями або будь-яким булевим контекстом.
Є два способи досягнути в JavaScript такого ж ефекту.
- Подвійне НЕ:
!!x
двічі заперечуєx
, що перетворюєx
на булеве значення, використовуючи той же алгоритм, що описано вище. - Функція
Boolean()
:Boolean(x)
використовує для перетворенняx
той же алгоритм, описаний вище.
Зверніть увагу на те, що істинність – не те саме, що нестрога рівність щодо true
або false
.
if ([]) {
console.log("[] – істинне значення");
}
if ([] == false) {
console.log("[] == false");
}
// [] – істинне значення
// [] == false
[]
– істинне значення, але також воно нестрого рівно false
. Воно істинне, тому що всі об'єкти – істинні. Проте як порівняти з false
, що є примітивом, []
також перетворюється на примітив, тобто на ""
– за допомогою Array.prototype.toString()
. Порівняння рядків і булевих значень призводить до того, що обидві сторони перетворюються на числа, і обидва ці значення стають 0
, тож [] == false
обчислюється як true
. Загалом, хибність і == false
– відрізняються у наступних випадках:
NaN
,undefined
іnull
– хибні, але нестрого не дорівнюютьfalse
."0"
(та інші рядкові літерали, окрім""
, що зводяться до 0), – істинні, але нестрого рівніfalse
.- Об'єкти – завжди істинні, але їхнє примітивне представлення може нестрого дорівнювати
false
.
Істинні значення мають навіть меншу ймовірність нестрого дорівнювати true
. Усі значення є або істинними, або хибними, але більшість значень не є нестрого рівними ані true
, ані false
.
Конструктор
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()
.
Приклади
Створення об'єктів Boolean з початковим значенням false
const bNoParam = new Boolean();
const bZero = new Boolean(0);
const bNull = new Boolean(null);
const bEmptyString = new Boolean("");
const bfalse = new Boolean(false);
Створення об'єктів Boolean з початковим значенням true
const btrue = new Boolean(true);
const btrueString = new Boolean("true");
const bfalseString = new Boolean("false");
const bSuLin = new Boolean("Su Lin");
const bArrayProto = new Boolean([]);
const bObjProto = new Boolean({});
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Boolean
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |
Boolean() constructor
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 3 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |
toSource
|
Chrome No support No | Edge No support No | Firefox No support 1 – 74 | Internet Explorer No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox for Android Full support 4 | Opera Android No support No | Safari on iOS No support No | Samsung Internet No support No | Deno No support No | Node.js No support No |
toString
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 3 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |
valueOf
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 4 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |
Дивіться також
- Булеве значення
- Булеві примітиви
- Логічний тип даних на Вікіпедії