Null vs Undefined в JavaScript: в чем разница?

от автора

в
Время чтения: 1 мин.

В JavaScript два специальных значения, null и undefined, обозначают отсутствие значения, но используются в разных контекстах. Новички часто путают их, поэтому давайте разберемся, чем они отличаются и когда применять каждое из них.


1. Что такое undefined?

undefined означает, что значение не было задано.

Когда появляется undefined?

  • Переменная объявлена, но не инициализирована:
  let x;
  console.log(x); // undefined
  • Функция не возвращает значение:
  function foo() {}
  console.log(foo()); // undefined
  • Обращение к несуществующему свойству объекта:
  const obj = { a: 1 };
  console.log(obj.b); // undefined
  • Аргумент функции не передан:
  function bar(a) { console.log(a); }
  bar(); // undefined

Тип undefined

typeof undefined возвращает "undefined":

console.log(typeof undefined); // "undefined"

2. Что такое null?

null — это явное указание на отсутствие значения.

Когда используется null?

  • Разработчик явно указывает, что значение отсутствует:
  let y = null;
  console.log(y); // null
  • Функция возвращает null, если ничего не найдено:
  document.getElementById("not-exist"); // null

Тип null

typeof null возвращает "object" (это баг в JS, который не исправлен для совместимости):

console.log(typeof null); // "object" (но это не объект!)

3. Сравнение null и undefined

  • Нестрогое равенство (==):
    null == undefinedtrue (специальное правило JS).
  • Строгое равенство (===):
    null === undefinedfalse (разные типы).
console.log(null == undefined);  // true
console.log(null === undefined); // false

4. Когда что использовать?

  • undefined — когда значение отсутствует «по умолчанию» (не задано).
  • null — когда вы явно указываете, что значение пустое.

Пример

function findUser(id) {
  if (id === 1) return { name: "Alice" };
  return null; // явно говорим: пользователь не найден
}

const user = findUser(999);
if (user === null) {
  console.log("Пользователь не найден");
}

Вывод

Критерийundefinednull
ЗначениеНе задано (по умолчанию)Явно указанное отсутствие
Тип"undefined""object" (баг в JS)
ИспользованиеПеременные без значенияЯвное «ничего»

Совет:

  • Используйте null, когда хотите явно указать на отсутствие значения.
  • undefined обычно возникает автоматически, когда что-то не определено.

Теперь вы знаете разницу и сможете избежать ошибок в коде! 🚀


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сколько будет 5 + 5?