Кратко
Секция статьи "Кратко"Null — это примитивный тип данных, который состоит из единственного значения null
.
Значение null
используют, когда нужно обозначить намеренное отсутствие значения.
Пример
Секция статьи "Пример"Пароля нет:
const password = null
const password = null
В списке важных дел по дням недели пользователь решил, что в субботу и воскресенье главного дела нет:
const mainFocusByDays = { mon: 'Исправить баг в вёрстке', tue: 'Разобрать почту' wed: 'Написать бота', thu: 'Изучить примитивные типы', fri: 'Отправить резюме в Яндекс', sat: null, sun: null}
const mainFocusByDays = { mon: 'Исправить баг в вёрстке', tue: 'Разобрать почту' wed: 'Написать бота', thu: 'Изучить примитивные типы', fri: 'Отправить резюме в Яндекс', sat: null, sun: null }
Как понять
Секция статьи "Как понять"null
обозначает понятия «отсутствует», «ничего», «пусто» или «значение неизвестно». Оно всегда явно задаётся программистом, JavaScript автоматически не устанавливает его.
В JavaScript null
используется только для обозначения конца цепочки прототипов, чтобы показать, что следующий прототип отсутствует.
В языке существует похожий примитив undefined
, он обозначает, что значение ещё не установлено. Их можно легко спутать, потому что оба обозначают отсутствие значения. Разница состоит в том, что null
обозначает намеренное отсутствие, а undefined
— неявное.
Например, сам JavaScript использует undefined
для обозначения не проинициализированных переменных:
let newValueconsole.log(newValue)// undefined// в явном виде говорим, что значение отсутствуетnewValue = null
let newValue console.log(newValue) // undefined // в явном виде говорим, что значение отсутствует newValue = null
На практике
Секция статьи "На практике"🛠 Оператор typeof
некорректно определяет тип у null
и возвращает значение 'object'
по историческим причинам.
console.log(typeof null)// 'object'
console.log(typeof null) // 'object'
🛠 Разделение между undefined
и null
очень слабое. Это рекомендация, которую не все выполняют. Команды могут договориться о своей трактовке этих значений.
Например, в приложении нужно отобразить список пользователей, полученный с сервера. Пока данных нет, мы рисуем заглушку. В этом случае мы можем трактовать значение undefined
как «отправили запрос на сервер, рисуем заглушку и ждём ответа», а null
как «сервер ответил, что у него нет данных».
🛠 Уточняйте договорённости по undefined
и null
на проекте. Часто они не зафиксированы на бумаге, но имеют большое значение.