Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS об'єкт Boolean

Примітиви Boolean та об'єкти Boolean

Булеві значення в JavaScript можна поділити на дві категорії: примітивні значення та об'єкти Boolean. Примітивні булеві значення представлені двома константами: true та false. Вони є основними елементами логічного виразу та часто використовуються для контролю потоку в програмі.

З іншого боку, об'єкт Boolean є обгорткою над примітивним булевим значенням і може бути створений за допомогою конструктора Boolean. Важливо зрозуміти відмінність між цими двома типами булевих значень, особливо коли працюєте з умовними виразами. Не плутайте примітивні булеві значення true та false із значеннями true та false об'єкта Boolean. Будь-який об'єкт, включаючи об'єкт Boolean зі значенням false, в умовному виразі оцінюється як true. Наприклад:

const x = new Boolean(false);
if (x) {
// цей код виконується
}

Ця поведінка не стосується булевих примітивів. Наприклад:

const x = false;
if (x) {
// цей код не виконується
}

Не слід використовувати конструктор Boolean() з new для перетворення небулевого значення на булеве. Замість цього можна використовувати Boolean як функцію або подвійний оператор NOT:

const good = Boolean(expression); // рекомендується
const good2 = !!expression; // рекомендується
const bad = new Boolean(expression); // не рекомендується

Пам'ятайте, що якщо ви вказуєте будь-який об'єкт, включаючи об'єкт Boolean зі значенням false, як початкове значення об'єкта Boolean, новий об'єкт Boolean матиме значення true:

const myFalse = new Boolean(false); // початкове значення false
const g = Boolean(myFalse); // початкове значення true
const myString = new String("Hello"); // рядковий об'єкт
const s = Boolean(myString); // початкове значення true

Приведення до типу Boolean

Процес приведення різних типів даних до булевого типу має свої особливості. Розберемо, як цей процес працює в мові JavaScript, і як різні значення можуть бути приведені до булевих:

  • Booleans повертаються без змін.
  • undefined та null перетворюються на false.
  • Числа 0, -0 та NaN перетворюються на false; решта чисел на true.
  • 0n перетворюється на false; інші значення BigInt на true.
  • Пустий рядок "" стає false; всі інші рядки стають true.
  • Symbols перетворюються на true.
  • Всі об'єкти вважаються true.

З розгляду вищезазначеного стає зрозумілим, що в JavaScript лише невелика кількість значень може бути приведена до false (так звані falsy значення). Всі інші значення називаються truthy. Подвійне заперечення, таке як !!x, або функція Boolean(x) використовують цей же алгоритм для перетворення x в булевий тип.

Істина значення відіграє ключову роль при використанні з логічними операторами, умовними операторами, або в будь-якому булевому контексті. Важливо зазначити, що істина значення не є тим же самим, що і вільне порівняння з true або false.

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

Масив [] є істинним, але також вільно порівнюється з false. Це відбувається тому, що всі об'єкти вважаються істинними в JavaScript. Проте при порівнянні з примітивом false, [] також конвертується в примітивний рядок "" завдяки методу Array.prototype.toString(). При порівнянні рядків та булевих значень обидва перетворюються в числа, і обидва стають 0, тому вираз [] == false є істинним. Загалом, значення falsy та == false відрізняються в наступних випадках:

  • NaN, undefined, та null є falsy, але не вільно порівнюються з false.
  • "0" (та інші рядкові літерали, які не є "", але конвертуються в 0) є truthy, але вільно порівнюються з false.
  • Об'єкти завжди є truthy, але їх примітивне представлення може вільно порівнюватися з false.

Зрозуміти, що значення truthy навряд чи можуть бути вільно порівнювані з true, важливо для правильного розуміння логіки мови. Усі значення в JavaScript або truthy, або falsy, але більшість з них вільно не порівнюються ні з true, ні з false.

Порада:

Примітивні булеві значення (true та false) зазвичай є більш зручними та зрозумілими у використанні, особливо для початківців.

Нотатка:

Важливо розуміти, що, на відміну від інших типів приведення, булеве приведення не перетворює об'єкти на примітиви.

Нотатка:

document.all повертає false, коли використовується як булеве значення, незважаючи на те, що це об'єкт. Ця властивість є застарілою і її не слід використовувати.

Синтаксис

var value = new Boolean(value);

Переглядачі

Переглядач

1

1

3

3

12

Переглядач

4.4

18

4

1

Переглядач

0.10.0

1.0

Приклади


Створення об'єктів булевого типу з початковим значенням false.

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

Створення об'єктів булевого типу з початковим значенням true.

const btrue = new Boolean(true);
const btrueString = new Boolean("true");
const bfalseString = new Boolean("false");
const bRandString = new Boolean("Рядок тексту");
const bArrayProto = new Boolean([]);
const bObjProto = new Boolean({});

Методи

toString()
Перетворює булеве значення у рядкове відображення.
constructor()
Створює новий об'єкт типу Boolean.
valueOf()
Повертає примітивне булеве значення об'єкта Boolean.

Властивості

prototype
Визначає додаткові методи для прототипу булевих об'єктів.