skip to main content

Null и undefined

js

Кратко 🔗

В JavaScript есть два типа данных, которые обозначают «ничего»:

  • null
  • undefined

Существует договоренность, когда какой использовать:

  • если значение намеренно установлено пустым, то используют null
  • если значение еще не было присвоено, то используют undefined

Как пишется 🔗

undefined 🔗

let name
console.log(name) // напечатает undefined, потому что значение еще не присвоено
const workoutsDoneByDays = [true, false, true, true, undefined, false, false]
let waitingTime = undefined // явно установили значение переменной в undefined

null 🔗

let pinCode = null // пин-кода нет

Как понять 🔗

Простым языком:

  • null обозначает понятие «ничего», «пусто», «значение неизвестно»
  • undefined обозначает, что значение еще не установлено

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

function greet(firstName, lastName) {
console.log(firstName, lastName)
}

greet("Иван", "Иванов") // напечатает «Иван Иванов»
greet("Петр") // напечатает «Петр undefined». Не передан второй аргумент, поэтому lastName будет undefined

Значение null всегда явно задаётся программистом, чтобы обозначить пустоту. В JavaScript null используется только для обозначения конца цепочки прототипов.

В работе 🔗

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

Например, в приложении нужно отобразить список пользователей, полученный с сервера. Пока данных нет, мы рисуем заглушку. В этом случае мы можем трактовать значение undefined как «отправили запрос на сервер, рисуем заглушку и ждем ответа», а null как «сервер ответил, что у него нет данных».

🛠 Уточняйте на проекте договоренности по undefined и null. Часто они не зафиксированы на бумаге, но имеют большое значение.