Пошук уроків, статей та іншого контенту
Познайомтеся з логічним типом boolean та значеннями true і false. Дізнайтеся, як логічні значення використовуються для перевірки умов і керування поведінкою програми.
booleanboolean — це логічний тип даних у JavaScript. Він має лише два можливі значення:
true — істина, «так»;
false — хиба, «ні».
Логічні значення допомагають програмі приймати рішення: виконувати певну дію чи ні, показувати повідомлення або перевіряти, чи виконана умова.
const isOnline = true;
const hasAccess = false;
console.log(isOnline); // true
console.log(hasAccess); // falseНа відміну від рядків "true" і "false", значення true та false не потрібно брати в лапки.
const value1 = true; // boolean
const value2 = "true"; // string
console.log(typeof value1); // "boolean"
console.log(typeof value2); // "string"Найчастіше boolean використовується разом із конструкцією if.
Якщо умова після if має значення true, виконується код у фігурних дужках. Якщо умова має значення false, цей код пропускається.
const isLoggedIn = true;
if (isLoggedIn) {
console.log("Вітаємо! Ви увійшли в систему.");
}У цьому прикладі змінна isLoggedIn має значення true, тому повідомлення буде виведено.
const isLoggedIn = false;
if (isLoggedIn) {
console.log("Вітаємо! Ви увійшли в систему.");
}Цього разу повідомлення не буде виведено, адже умова має значення false.
elseЗа допомогою else можна описати код, який виконається, якщо умова хибна.
const hasTicket = false;
if (hasTicket) {
console.log("Ви можете пройти на подію.");
} else {
console.log("Для входу потрібен квиток.");
}Одна з двох гілок виконається завжди:
if — коли умова дорівнює true;
else — коли умова дорівнює false.
boolean у результаті порівнянняОператори порівняння повертають логічне значення.
| Оператор | Значення | |---|---| | > | більше | | < | менше | | >= | більше або дорівнює | | <= | менше або дорівнює | | === | дорівнює за значенням і типом | | !== | не дорівнює за значенням або типом |
const age = 20;
console.log(age >= 18); // true
console.log(age < 18); // false
console.log(age === 20); // true
console.log(age !== 20); // falseРезультат порівняння можна зберегти у змінну:
const age = 16;
const isAdult = age >= 18;
console.log(isAdult); // falseТепер змінна isAdult містить готову відповідь на запитання: чи є користувач повнолітнім.
const age = 16;
const isAdult = age >= 18;
if (isAdult) {
console.log("Доступ дозволено.");
} else {
console.log("Доступ заборонено.");
}Для перевірки рівності найчастіше використовують оператор ===, а для перевірки нерівності — !==.
console.log(5 === 5); // true
console.log(5 === "5"); // false
console.log(5 !== "5"); // trueОператор === перевіряє і значення, і тип даних. Число 5 та рядок "5" мають різні типи, тому вони не є строго рівними.
Оператор == виконує нестроге порівняння та може автоматично перетворювати типи:
console.log(5 == "5"); // true
console.log(5 === "5"); // falseПочатківцям краще використовувати === і !==, щоб уникати неочікуваних результатів.
!Оператор ! означає «не» та змінює логічне значення на протилежне:
!true дає false;
!false дає true.
const isBlocked = false;
console.log(!isBlocked); // trueОператор ! часто використовують для перевірки протилежної умови:
const isLoading = false;
if (!isLoading) {
console.log("Дані вже завантажені.");
}&&Оператор && читається як «і». Умова буде істинною лише тоді, коли істинні обидві частини.
const age = 25;
const hasTicket = true;
if (age >= 18 && hasTicket) {
console.log("Ви можете пройти на концерт.");
} else {
console.log("Умови входу не виконані.");
}У цьому прикладі потрібно одночасно:
бути повнолітнім;
мати квиток.
Якщо хоча б одна умова має значення false, увесь вираз буде false.
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false||Оператор || читається як «або». Вираз буде істинним, якщо істинна хоча б одна з його частин.
const isAdmin = false;
const isModerator = true;
if (isAdmin || isModerator) {
console.log("Ви можете керувати повідомленнями.");
}Користувачеві достатньо мати одну з двох ролей:
адміністратора;
модератора.
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // falseЛогічні оператори можна поєднувати. Для зрозумілості складні умови краще групувати за допомогою дужок.
const age = 22;
const hasTicket = true;
const isGuestListMember = false;
const canEnter = age >= 18 && (hasTicket || isGuestListMember);
if (canEnter) {
console.log("Вхід дозволено.");
} else {
console.log("Вхід заборонено.");
}Умова означає:
користувач має бути повнолітнім;
і водночас мати квиток або бути у списку гостей.
falseУ JavaScript деякі значення під час перевірки в умові поводяться як false. Їх називають falsy-значеннями.
До них належать, зокрема:
false;
0;
"" — порожній рядок;
null;
undefined;
NaN.
const userName = "";
if (userName) {
console.log(`Привіт, ${userName}!`);
} else {
console.log("Ім'я не вказано.");
}Порожній рядок "" поводиться як false, тому виконається гілка else.
Більшість інших значень поводяться як true. Наприклад, непорожній рядок і ненульове число:
if ("JavaScript") {
console.log("Непорожній рядок поводиться як true.");
}
if (42) {
console.log("Ненульове число поводиться як true.");
}Це не означає, що рядок "true" або число 1 фактично мають тип boolean. Їхній тип залишається відповідно string і number, але в умовах вони трактуються як істинні.
Логічні значення зручно використовувати для перевірки кількох полів форми.
const email = "user@example.com";
const password = "secret123";
const isEmailEntered = email !== "";
const isPasswordEntered = password !== "";
if (isEmailEntered && isPasswordEntered) {
console.log("Форму можна надіслати.");
} else {
console.log("Заповніть усі поля.");
}Змінні isEmailEntered та isPasswordEntered мають тип boolean. Їхні назви починаються з is, тому одразу зрозуміло, що вони описують логічну умову.
Поширені початки назв логічних змінних:
is... — «чи є» або «чи перебуває»;
has... — «чи має»;
can... — «чи може».
const isReady = true;
const hasPermission = false;
const canEdit = true;Наведений код можна запустити у Node.js або в консолі браузера.
const userName = "Олена";
const age = 19;
const hasAccount = true;
const isBlocked = false;
const isAdult = age >= 18;
const canUseService = hasAccount && isAdult && !isBlocked;
if (canUseService) {
console.log(`${userName}, доступ дозволено.`);
} else {
console.log(`${userName}, доступ заборонено.`);
}Як працює цей код:
age >= 18 повертає true, оскільки вік дорівнює 19.
hasAccount має значення true.
!isBlocked також дає true, оскільки isBlocked дорівнює false.
Усі частини умови з && істинні.
Змінна canUseService отримує значення true.
const isReady = "false";
if (isReady) {
console.log("Цей код виконається.");
}Рядок "false" є непорожнім, тому в умові він поводиться як true. Якщо потрібне логічне значення, не використовуйте лапки:
const isReady = false;Оператор = присвоює значення, а не перевіряє рівність.
let status = "ready";
// Помилка: значення присвоюється замість перевірки
if (status = "done") {
console.log("Готово.");
}Для порівняння використовуйте ===:
const status = "done";
if (status === "done") {
console.log("Готово.");
}= та ==== — присвоїти значення;
=== — перевірити строгу рівність;
!== — перевірити строгу нерівність.
const password = "abc123";
console.log(password === "abc123"); // true
console.log(password !== "abc123"); // falsetrueТакий код працює, але він зайвий:
const isOnline = true;
if (isOnline === true) {
console.log("Користувач онлайн.");
}Зазвичай достатньо написати:
if (isOnline) {
console.log("Користувач онлайн.");
}Для перевірки хибного значення використовуйте !:
if (!isOnline) {
console.log("Користувач офлайн.");
}boolean — це логічний тип даних.
Він має два значення: true і false.
Логічні значення використовують в умовах if.
Оператори порівняння повертають boolean.
&& означає «і», || — «або», ! — «не».
Для порівняння краще використовувати === та !==.
Не плутайте true з рядком "true".
Значення 0, "", null, undefined та false поводяться як хибні в умовах.
Логічні змінні часто називають із префіксами is, has або can.