Ответ
В JavaScript falsy-значение — это значение, которое приводится к false в булевом контексте (например, в условии if, при использовании логического оператора ! или в тернарном операторе).
Список всех 6 falsy-значений:
false— булево значение ложь.0— число ноль (также-0,0n(BigInt)).""— пустая строка (также'',``).null— отсутствие какого-либо значения объекта.undefined— неопределенное значение.NaN(Not a Number) — результат некорректной математической операции.
Примеры проверки в условиях:
// Все эти условия НЕ выполнятся (блок if будет пропущен)
if (false) { /* ... */ }
if (0) { /* ... */ }
if ("") { /* ... */ }
if (null) { /* ... */ }
if (undefined) { /* ... */ }
if (NaN) { /* ... */ }
// Практическое использование для проверки на наличие значения
function greetUser(name) {
// Если name - falsy (undefined, "", null), используется значение по умолчанию
const userName = name || 'Гость';
console.log(`Привет, ${userName}!`);
}
greetUser(); // Привет, Гость!
greetUser("Анна"); // Привет, Анна!
Важные нюансы:
- Все остальные значения являются truthy. Это включает неочевидные, такие как:
"0"(строка с нулем),"false"(непустая строка)[](пустой массив),{}(пустой объект)function() {}(пустая функция)
- Явное сравнение (
===) строже, чем приведение типа.if (0 === false)вернетfalse, так как типы разные. - Для безопасной проверки на
nullилиundefinedиспользуйте оператор нулевого слияния (??). Он возвращает правый операнд, только если левый —nullилиundefined(но не другие falsy-значения).const count = 0; console.log(count || 10); // 10 (потому что 0 - falsy) - может быть ошибкой! console.log(count ?? 10); // 0 (корректно, так как count не null/undefined)