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

Ответ

Falsy значения в JavaScript — это значения, которые при приведении к логическому типу становятся false. В Node.js окружении это особенно важно при валидации входных данных, обработке условий и работе с логикой приложений.

Всего 6 falsy значений:

  1. false
  2. 0 (ноль)
  3. "" (пустая строка)
  4. null
  5. undefined
  6. NaN

Пример проверки:

// Валидация входных параметров в Express middleware
function validateInput(input) {
  if (!input) { // Сработает для всех falsy значений
    throw new Error('Input is required');
  }
  // Дальнейшая обработка
}

// Явная проверка на конкретные falsy случаи
function processUserData(user) {
  if (user.age === undefined || user.age === null) {
    return 'Age not provided';
  }
  if (isNaN(user.age)) {
    return 'Invalid age format';
  }
  return `Age: ${user.age}`;
}

Важные нюансы:

  • [], {}, "0", "false" — являются truthy значениями.
  • В Node.js при работе с файловой системой или базами данных часто проверяю if (!buffer.length) или if (!resultSet) для falsy-проверок.
  • Для строгой проверки использую === вместо == чтобы избежать неявного приведения типов.

Ответ 18+ 🔞

Вот, блядь, сидишь ты такой, пишешь код, и тут на тебе — falsy значения. Это, ёпта, такие штуки в JavaScript, которые, когда их в булев тип пихаешь, становятся false. В Node.js это вообще святое, особенно когда данные проверяешь или условия обрабатываешь — тут без этого нихуя не сделаешь.

Их всего шесть, запомни, как отче наш:

  1. false — ну тут и ежу понятно.
  2. 0 — обычный ноль, не путай со строкой.
  3. "" — пустая строка, хоть глазом моргни — нихуя нет.
  4. null — классика, полное отсутствие чего-либо.
  5. undefined — когда переменная как та девушка, которая сказала «позвоню» и пропала.
  6. NaN — результат, когда математика окончательно ебнулась.

Смотри, как это в деле выглядит:

// Допустим, в Express middleware данные валидируешь
function validateInput(input) {
  if (!input) { // Вот тут на всех шестерых сработает
    throw new Error('Input is required');
  }
  // Ну а дальше уже по плану
}

// А вот если нужно по точечнее, на конкретные случаи
function processUserData(user) {
  if (user.age === undefined || user.age === null) {
    return 'Age not provided'; // Чёт не пришло, бля
  }
  if (isNaN(user.age)) {
    return 'Invalid age format'; // Написали "сто лет", а не 100
  }
  return `Age: ${user.age}`;
}

А теперь, чувак, главные подводные камни, чтоб ты не обосрался:

  • [], {}, "0", "false" — это всё truthy, то есть true. Да-да, пустой массив или объект — уже не ложь. Я сам сначала офигевал.
  • В Node.js, когда с файлами или базой работаешь, часто видишь проверки типа if (!buffer.length) или if (!resultSet) — это оно, falsy-проверки в естественной среде обитания.
  • И самый важный совет, блядь: используй === вместо ==. Это чтобы язык со своей «гибкостью» типов тебе не впендюрил какую-нибудь неожиданную хуйню. Строгая проверка — твой друг, доверия ебать ноль к неявным приведениям.