← Назад к вопросам

Что такое Falsy значения в JavaScript?

1.8 Middle🔥 151 комментариев
#Soft skills и карьера#Автоматизация тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Falsy значения в JavaScript?

Falsy значения — это значения, которые при преобразовании к булевому типу (boolean) становятся false. Это ключевое понятие в JavaScript, так как язык активно использует неявное преобразование типов (type coercion) в различных контекстах: в условных выражениях (if, while, switch), логических операциях (&&, ||, !) и при сравнениях.

Полный список Falsy значений

В JavaScript существует всего 7 falsy значений:

  • false — булевое значение false, очевидно, является falsy.
  • 0 — числовой нуль (включая 0, 0.0, -0).
  • "" — пустая строка (двойные кавычки).
  • '' — пустая строка (одинарные кавычки).
  • null — специальное значение, обозначающее «ничего» или «неизвестное значение».
  • undefined — значение, обозначающее, что переменная не была определена или свойство отсутствует.
  • NaN — специальное числовое значение «Not-a-Number», результат некорректных математических операций.

Примечание: document.all в браузерах исторически также является falsy, но это специфическое исключение, связанное с устаревшим API, и не рассматривается как основное falsy значение.

Как falsy значения работают в практике

JavaScript автоматически преобразует значения к булевому типу в условиях. Это позволяет писать компактный код.

// Пример проверки на falsy в условии if
let value = 0;

if (value) {
    console.log("Truthy — выполнится если value не falsy");
} else {
    console.log("Falsy — выполнится для 0, null, undefined, '' и др.");
}
// Вывод: "Falsy"

Примеры и важные особенности

1. Числа: только 0 является falsy

console.log(Boolean(0));      // false
console.log(Boolean(-0));     // false
console.log(Boolean(42));     // true
console.log(Boolean(-3.14));  // true
console.log(Boolean(Infinity)); // true

2. Строки: только пустая строка falsy

console.log(Boolean(""));        // false
console.log(Boolean(''));        // false
console.log(Boolean("false"));   // true (не пустая!)
console.log(Boolean("0"));       // true (не пустая!)

3. null и undefined

console.log(Boolean(null));      // false
console.log(Boolean(undefined)); // false

4. NaN — всегда falsy, даже при сравнениях

console.log(Boolean(NaN));       // false
console.log(NaN === false);      // false (NaN не равен false, он falsy при преобразовании)

5. Объекты и массивы — всегда truthy, даже пустые

console.log(Boolean([]));        // true (пустой массив)
console.log(Boolean({}));        // true (пустой объект)
console.log(Boolean(new Date())); // true

Практическое применение

Условные операторы и логические операторы

// Использование || для задания значения по умолчанию
function greet(name) {
    name = name || "Guest"; // Если name falsy (undefined, ''), используем "Guest"
    console.log(`Hello, ${name}!`);
}

greet("Alice"); // Hello, Alice!
greet();        // Hello, Guest! (name undefined → falsy)

// Использование && для безопасного доступа
let user = { profile: { name: "Bob" } };
let userName = user && user.profile && user.profile.name; // Если любая часть falsy, вернет falsy

Проверка на пустоту (комбинированная)

function isValid(value) {
    // Проверяем, что value не null, не undefined и не пустая строка
    return value != null && value !== '';
}

console.log(isValid("text")); // true
console.log(isValid(""));     // false
console.log(isValid(null));   // false

Truthy значения

Все значения, которые не являются falsy, считаются truthy и преобразуются в true. Это включает:

  • Все числа, кроме 0 и -0 (включая отрицательные, дробные, Infinity)
  • Все непустые строки
  • Все объекты (включая функции, массивы, даты, регулярные выражения)
  • Специальные значения true

Отличие falsy от false и сравнения

Важно понимать, что falsy значение не равно false при строгом сравнении (===), но преобразуется к false при неявном преобразовании.

console.log(0 == false);   // true (неявное преобразование)
console.log(0 === false);  // false (разные типы: number vs boolean)
console.log("" == false);  // true
console.log("" === false); // false

Заключение

Знание falsy значений критически важно для понимания логики работы JavaScript, предотвращения ошибок и написания эффективного, минимального кода. Это основа для:

  • Корректных условных проверок
  • Использования операторов || и && для контроля потока выполнения
  • Реализации значений по умолчанию (default values)
  • Проверки входных данных и валидации

Ошибки, связанные с непониманием falsy/truthy, часто приводят к неправильной обработке граничных случаев (например, когда 0 или пустая строка являются допустимыми входными данными, но код трактует их как «невалидные»).

Что такое Falsy значения в JavaScript? | PrepBro