undefined

Примитивный тип данных. Состоит из единственного значения undefined. Обозначает, что значение не определено.

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

Кратко

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

Undefined — это примитивный тип данных, состоящий из одного значения undefined. Оно используется, чтобы обозначить неизвестное или неопределённое значение.

JavaScript автоматически устанавливает значение undefined объявленным переменным, которые не были проинициализированы значением.

Пример

Секция статьи "Пример"

JavaScript автоматически устанавливает значение undefined новой переменной:

        
          
          let nameconsole.log(name)// undefined
          let name

console.log(name)
// undefined

        
        
          
        
      

Также JavaScript автоматически устанавливает значение undefined в аргумент функции, если значение не передали при вызове:

        
          
          function hello(name) {  console.log('Привет, ' + name)}hello('Витя')// Привет, Витяhello()// Привет, undefined
          function hello(name) {
  console.log('Привет, ' + name)
}

hello('Витя')
// Привет, Витя
hello()
// Привет, undefined

        
        
          
        
      

Вручную установленное undefined, чтобы обозначить неизвестное значение:

        
          
          const person = {  name: 'Пётр',  lastName: 'Романов',  age: undefined}
          const person = {
  name: 'Пётр',
  lastName: 'Романов',
  age: undefined
}

        
        
          
        
      

Но будьте аккуратны, когда устанавливаете undefined свойствам объектов. Если у объекта person удалить age, то при обращении к несуществующему свойству также вернётся undefined.

Как понять

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

undefined обозначает, что значение по каким-то причинам ещё не установлено или неизвестно. В этом контексте его использует сам язык JavaScript.

В языке существует похожий примитив null. Он обозначает, что значение отсутствует. undefined и null можно легко спутать, потому что это близкие понятия. Различие состоит в том, что null обозначает отсутствие значения, а undefined — что значение неизвестно или не задано.

На практике

Секция статьи "На практике"

Николай Лопин

Секция статьи "Николай Лопин"

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

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

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