Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Truthy/falsy значення». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Truthy** та **falsy** - це два класи значень у JavaScript: будь-яке значення можна привести до логічного типу (`boolean`), і якщо воно стає `true` - воно truthy, якщо `false` - falsy. Falsy-значень усього вісім: `false`, `0`, `-0`, `0n`, `""`, `null`, `undefined`, `NaN`, все інше - truthy. **Ключове:** JS не порівнює значення, а перетворює їх до `boolean`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Визначення У JavaScript **будь-яке значення** можна привести до логічного типу (`boolean`). - Якщо після приведення воно стає `true` -> це **truthy** значення. - Якщо стає `false` -> це **falsy** значення. --- ## Перевірити легко: ```javascript Boolean(value) // поверне true або false !!value // короткий еквівалент ``` --- ## Список усіх **falsy** значень (всього 8) | Значення | Опис | |---|---| | `false` | хиба | | `0` | число нуль | | `-0` | від'ємний нуль | | `0n` | BigInt нуль | | `""` | порожній рядок | | `null` | "нічого" | | `undefined` | не визначено | | `NaN` | результат некоректних числових операцій | Все інше в JavaScript - **truthy**. --- ## Приклади falsy ```javascript Boolean(false); // false Boolean(0); // false Boolean(''); // false Boolean(null); // false Boolean(undefined); // false Boolean(NaN); // false ``` --- ## Приклади truthy ```javascript Boolean(true); // true Boolean(1); // true Boolean('0'); // true (рядок, не порожній) Boolean('false'); // true (теж рядок) Boolean([]); // true (порожній масив все одно truthy) Boolean({}); // true (порожній об'єкт) Boolean(function(){});// true (функція) ``` --- ## Приклад в умові `if` ```javascript if ('hello') { console.log('Виконається'); } if (0) { console.log('Не виконається'); } ``` > Тому що `'hello'` -> truthy, > а `0` -> falsy. --- ## Приклад з оператором `&&` ```javascript console.log(true && 'JS'); // "JS" (обидва truthy) console.log(false && 'JS'); // false (falsy зупиняє) ``` --- ## Приклад з оператором `||` ```javascript console.log('' || 'default'); // "default" console.log('Hi' || 'default'); // "Hi" ``` > `||` повертає **перше truthy значення**. --- ## Приклад з подвійним запереченням `!!` ```javascript !!'text' // true !!0 // false !![] // true !!null // false ``` --- ## Важливо: truthy ≠ "логічно true" у математичному сенсі JS не "порівнює", а **перетворює** значення до `boolean`. ```javascript 'false' == true // false !!'false' // true ``` > `'false'` - рядок (truthy), > але при порівнянні з `true` - інша логіка (спочатку приводяться типи). --- ## Підсумок | Тип | Приклади | Логічне значення | |---|---|---| | **Falsy** | `false`, `0`, `-0`, `0n`, `""`, `null`, `undefined`, `NaN` | `false` | | **Truthy** | `'0'`, `' '`, `'false'`, `[]`, `{}`, `function(){}` | `true` | --- ## Коротко > **Truthy** - "поводиться як `true`" > **Falsy** - "поводиться як `false`" --- **Перевірка:** ```javascript if (value) { // виконується, якщо value truthy } else { // якщо value falsy } ```Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.