Boolean у рядок — метод toString() об'єкта в JavaScript


Загальний опис

Метод Boolean.prototype.toString() у JavaScript дозволяє перетворити булеве значення (true або false) у рядкове відображення ("true" або "false"). Цей метод є дуже корисним, коли потрібно виконати неявне або явне рядкове представлення булевих значень, зокрема під час логування, дебагу, або при виводі значень на екран.

Зазвичай, у більшості ситуацій, JavaScript автоматично перетворює типи даних, коли це необхідно. Однак, у певних випадках, явне перетворення може бути більш зрозумілим або безпечним. Для цього і існує метод Boolean.prototype.toString(). Цей метод можна викликати на булевому об'єкті або змінній.

Приклад:

let myBool = true;
let myString = myBool.toString();  // "true"

Зверніть увагу, що виклик методу на примітивному булевому значенні (не на об'єкті) також працює завдяки автоматичному "boxing":

let myString = true.toString();  // "true"

Основні особливості та прийоми роботи

  1. Не приймає аргументів: Метод Boolean.prototype.toString() не приймає жодних аргументів.
  2. Виклик на примітивах: Якщо викликати метод на примітивному булевому значенні, JavaScript автоматично "упаковує" примітивне значення в об'єкт, викликає метод, а потім "розпаковує" назад у примітив.
  3. Явне перетворення: Інколи явне перетворення типів є більш бажаним, особливо коли працюєте з даними, які приходять з зовнішніх джерел. В цих випадках Boolean.prototype.toString() може бути корисним.

Приклад важливості явного перетворення:

let userData = {
  isActive: true
};

let stringifiedData = JSON.stringify(userData);  // {"isActive":"true"}

// Під час роботи з даними
if (userData.isActive.toString() === 'true') {
  // Здійснюємо якісь дії
}
автор: Bond

Загальний опис

автор: NagarD

Порада

Якщо ви працюєте з примітивним булевим значенням, JavaScript автоматично "упаковує" його в об'єкт для виклику методів, включаючи Boolean.prototype.toString(). Це не завжди очевидно, тому має сенс розуміти цей процес.

автор: Bond
Порада

Якщо ви часто користуєтеся Boolean.prototype.toString() в критичних для продуктивності частинах коду, може виникнути додаткова навантаження через процес "boxing". В таких випадках розгляньте можливість використовувати альтернативні методи перетворення чи зберігання вже перетворених значень для подальшого використання.

автор: Bond
Порада

Хоча Boolean.prototype.toString() перетворює булеві значення на рядки, вам не потрібно використовувати цей метод для здійснення логічних перевірок. Замість цього, використовуйте прямі булеві значення. Наприклад:

❌ Неправильно:

if (isActive.toString() === "true") { ... }

✅ Правильно:

if (isActive) { ... }
автор: Bond
Порада

Якщо вам потрібно вивести значення змінної на екран або в консоль у форматі рядка, Boolean.prototype.toString() буде вам у нагоді. Це може полегшити вам читання виведених даних, особливо у великих об'єктах або масивах.

console.log(`User status is: `{isActive.toString()}`);
автор: Bond
Нотатка

Хоча Boolean.prototype.toString() зазвичай не є першим вибором для досвідчених розробників, він може бути корисним у випадках, коли потрібно зробити код більш самодокументованим. Крім того, цей метод є "безпечним", оскільки не призводить до неочікуваних побічних ефектів при перетворенні типів.

автор: Bond
Нотатка

Зверніть увагу, що при використанні методів, як console.log, булеві значення часто автоматично перетворюються у рядки. Однак, явне використання Boolean.prototype.toString() може допомогти уникнути можливих незрозумілостей у коді.

автор: Bond

Синтаксис

toString()

Повернення

string

Повертає рядкове представлення булевого значення, конкретно: "true" для true і "false" для false.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 4 12 3
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

В цьому прикладі ми маємо змінну isActive із булевим значенням true. Для того, щоб вивести це значення у форматі рядка на екран, ми використовуємо метод Boolean.prototype.toString(). У результаті, в консолі ми побачимо рядок "Статус активності: true".

// Створюємо змінну із булевим значенням
let isActive = true;

// Виводимо на екран рядкове представлення булевого значення
console.log("Статус активності: " + isActive.toString());
автор: Bond

Прогін по всіх межах методу: ігнорований аргумент, помилки при виклику на чужому типі, обгортка new Boolean(false), яка істинна, справжній вигляд булевого значення в JSON і зворотне перетворення, де Boolean("false") дає true.

// toString() у булевого значення робить рівно одне: віддає рядок 'true' або 'false'
console.log('true.toString() ->', JSON.stringify(true.toString()));
console.log('false.toString() ->', JSON.stringify(false.toString()));
console.log('тип результату:', typeof true.toString());

// три звичні способи дають те саме; toString явно кличуть найрідше
const b = false;
console.log('String(b):', JSON.stringify(String(b)),
    '| b + "":', JSON.stringify(b + ''),
    '| b.toString():', JSON.stringify(b.toString()));

// ⚠️ аргументів метод не приймає: цифра, яка в числа означає систему числення, тут нічого не робить
console.log('true.toString(2):', JSON.stringify(true.toString(2)),
    '| а для числа (5).toString(2):', JSON.stringify((5).toString(2)));

// ⚠️ позичити метод чужому типу не вийде
try { Boolean.prototype.toString.call(1); } catch (e) { console.log('call(1):', e.name, '-', e.message); }
try { Boolean.prototype.toString.call('true'); } catch (e) { console.log('call("true"):', e.name); }
console.log('call(new Boolean(true)):', Boolean.prototype.toString.call(new Boolean(true)));

// у null і undefined методів немає взагалі
try { null.toString(); } catch (e) { console.log('null.toString():', e.name); }

// ⚠️ обгортка new Boolean(false) віддає правильний рядок, але сама ЗАВЖДИ істинна
const obj = new Boolean(false);
console.log('obj.toString():', JSON.stringify(obj.toString()), '| typeof obj:', typeof obj);
console.log('if (obj) спрацює:', obj ? 'так' : 'ні',
    '| obj == false:', obj == false, '| obj === false:', obj === false);

// ⚠️ у JSON булеве значення лишається булевим, а не стає рядком
console.log('JSON.stringify({ isActive: true }):', JSON.stringify({ isActive: true }));
console.log('JSON.stringify(true):', JSON.stringify(true), '| тип цього результату:', typeof JSON.stringify(true));

// ⚠️ зворотного перетворення toString не робить, і Boolean() тут не помічник
console.log('Boolean("false"):', Boolean('false'),
    '| Boolean("0"):', Boolean('0'), '| Boolean(""):', Boolean(''));
console.log('правильно так:', 'false' === String(false), '| або через JSON.parse("false"):', JSON.parse('false'));

// у складанні рядків toString кличеться сам, а в арифметиці — ні
console.log('"стан: " + true ->', 'стан: ' + true);
console.log('true + 1 ->', true + 1, '| true + true ->', true + true, '— це числа, а не рядки');
console.log('[true, false].join("|") ->', [true, false].join('|'));
автор: NagarD

Цей приклад демонструє можливість взаємодії користувача з веб-сторінкою, де він може ввести булеве значення (true або false) у текстове поле та натиснути на кнопку, щоб перетворити це значення на рядок за допомогою методу Boolean.prototype.toString(). Результат перетворення відображається на сторінці.

HTML

<header>
  <h2 class="title">Boolean.prototype.toString()</h2>
  <p class="description">Перетворює булеве значення у рядок.</p>
</header>
<main>
  <div class="result">
    <label for="boolInput">Введіть булеве значення (true/false):</label>
    <input type="text" id="boolInput">
    <button onclick="convertToString()">Перетворити</button>
    <div id="output"></div>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

#output {
  margin-top: 10px;
  font-weight: bold;
}

JS

function convertToString() {
  let inputValue = document.getElementById("boolInput").value;

  if (inputValue === "true" || inputValue === "false") {
    let booleanValue = inputValue === "true";
    document.getElementById("output").textContent = booleanValue.toString();
  } else {
    document.getElementById("output").textContent = "Введіть коректне булеве значення!";
  }
}
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми створили функцію isTrueString, яка приймає рядкове значення як параметр і перевіряє, чи є це значення рядковим представленням булевого true за допомогою методу Boolean.prototype.toString(). Після чого ми викликаємо цю функцію з рядком "true" і виводимо результат у консоль. У результаті, в консолі буде виведено рядок "Чи є значення 'true' рядком: true".

// Маємо функцію, яка перевіряє чи значення є "true" рядком
function isTrueString(value) {
    return value === true.toString();
}

// Перевіряємо рядкове значення
let result = isTrueString("true");
console.log("Чи є значення 'true' рядком: " + result.toString());
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід