Undefined

Undefined

Технический фундамент состояния undefined

undefined чаще сигнализирует о техническом отсутствии значения:

  • переменная объявлена, но не инициализирована;
  • свойство отсутствует в объекте;
  • функция не вернула явный результат;
  • параметр не был передан при вызове.

Точная обработка undefined особенно важна на границах входа и в fallback-логике.

Что такое undefined и почему это важно

undefined означает, что значение пока не задано. Это стандартное состояние JavaScript для некоторых сценариев: переменная объявлена, но не инициализирована; у объекта нет такого свойства; функция не вернула значение.

Ключевой момент: undefined чаще сигнализирует о "значение не назначено", а не о намеренной пустоте.

Проверь себя: почему undefined чаще связан с техническим состоянием, а null - с осознанным бизнес-решением?

Где появляется undefined

let value;
console.log(value); // undefined

const user = { name: 'Anna' };
console.log(user.age); // undefined

function log() {}
console.log(log()); // undefined

Смотри, что важно: undefined не всегда ошибка. Иногда это нормальный промежуточный статус.

Проверки на undefined

if (value === undefined) {
  console.log('значение не задано');
}

Также часто проверяют через typeof, если переменная может быть вообще не объявлена.

if (typeof maybeVar === 'undefined') {
  console.log('переменная отсутствует');
}

Здесь часто путаются: прямое обращение к несуществующей переменной бросает ReferenceError, а typeof безопасно возвращает 'undefined'.

undefined и опциональные данные

Мини-сценарий: API может не прислать поле avatarUrl.

function getAvatar(user) {
  if (user.avatarUrl === undefined) return 'default-avatar.png';
  return user.avatarUrl;
}

Это типичный fallback для интерфейса.

Проверь себя: почему проверка if (user.avatarUrl) может быть слишком грубой для этого случая?

undefined в параметрах функции

Если аргумент не передан, параметр будет undefined.

function greet(name) {
  if (name === undefined) return 'Привет, гость!';
  return `Привет, ${name}!`;
}

Можно задавать значение по умолчанию:

function greet(name = 'гость') {
  return `Привет, ${name}!`;
}

Смотри, что важно: значение по умолчанию применяется только если аргумент равен undefined.

console.log(greet()); // Привет, гость!
console.log(greet(undefined)); // Привет, гость!
console.log(greet(null)); // Привет, null!

Частые ошибки новичков

  • Путать undefined и null.
  • Считать любое undefined фатальной ошибкой.
  • Писать проверки, где 0 или '' ошибочно трактуются как отсутствие значения.
  • Не задавать дефолты для опциональных параметров.

Анти-провал: проверяй конкретное условие отсутствия (=== undefined), если для тебя важны значения 0, false, ''.

Что будет, если изменить вход

Если в greet передать '', это не undefined, и функция вернет Привет, ! (если не добавить отдельную проверку пустой строки). Значит, помимо undefined часто нужно обрабатывать и бизнес-edge case пустого текста.

Проверь себя: какие проверки нужны, чтобы отличать "не передали" от "передали пустую строку"?

Краткий итог

  • undefined означает, что значение не задано.
  • Он появляется в ряде стандартных сценариев языка.
  • Для безопасной логики нужны явные проверки и корректные fallback.
  • typeof ... === 'undefined' полезен, когда переменная может отсутствовать.
  • Разделяй undefined как техническое отсутствие и бизнес-правила пустых значений.