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

«Что такое truthy и falsy значения в JavaScript?» — вопрос из категории JavaScript, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JavaScript (и, соответственно, в Node.js) truthy и falsy — это термины, описывающие значения, которые при неявном приведении к булевому типу (например, в условии if) становятся true или false.

Список falsy-значений (всего 8):

  1. false
  2. 0 (ноль)
  3. -0 (минус ноль)
  4. 0n (BigInt ноль)
  5. "", '', `` (пустая строка)
  6. null
  7. undefined
  8. NaN

Любое другое значение является truthy. Это включает в себя:

  • "0", "false", " " (непустая строка, даже если содержит только пробел)
  • [] (пустой массив)
  • {} (пустой объект)
  • function() {} (пустая функция)
  • Infinity

Практические примеры в Node.js:

// Проверка на truthy/falsy
const userInput = process.argv[2]; // Аргумент командной строки

if (userInput) { // Если аргумент передан (не undefined и не пустая строка)
  console.log(`Вы ввели: ${userInput}`);
} else {
  console.log('Аргумент не предоставлен.');
}

// Логический оператор ИЛИ (||) использует это поведение для задания значений по умолчанию
const port = process.env.PORT || 3000; // Если PORT не задан (undefined) или равен 0, будет использовано 3000
console.log(`Сервер запущен на порту ${port}`);

// Опциональная цепочка (?.) и оператор объединения с null (??) работают иначе:
// `??` реагирует только на `null` и `undefined`.
const configValue = someObject?.nested?.value ?? 'default'; // 'default' только если value === null/undefined