null

Примитивный тип данных. Состоит из единственного значения null и обозначает отсутствие значения.

Время чтения: меньше 5 мин

Кратко

Секция статьи "Кратко"

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 на проекте. Часто они не зафиксированы на бумаге, но имеют большое значение.