# Типы данных. null и undefined

[![Generic badge](https://img.shields.io/badge/JavaScript-%D0%B4%D0%BB%D1%8F%20%D1%82%D1%83%D0%BF%D1%8B%D1%85-green.svg)](https://img.shields.io/badge/JavaScript-%D0%B4%D0%BB%D1%8F%20%D1%82%D1%83%D0%BF%D1%8B%D1%85-green.svg)

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8Vf51aqc9lap07PEeY%2F-M8VfHRh8xz5M3FCA40t%2Fimg-10.png?alt=media\&token=46df1fb0-dd2b-4429-a93a-69eb82bddc3b)

**Тип null**

Данный тип формируется только из одного единственного значения – `null`. Да-да, **`null`** является и *типом* и *значением* **одновременно**. Используется он для того, чтобы пометить что-либо, как ничего, пустышка и т.п.

Зачастую `null` используется при инициализации какой-либо переменной, которая изначально не имеет никакого значения.

Например:

```javascript
let agreementAccepted = null;
```

Т.е, этим мы инициализировали переменную с начальным значением `null`. Это часто применяется и об этом ты узнаешь дальше, когда мы будем заниматься практикой. Если не указать значение переменной при её инициализации, то значение переменной будет равно **`undefined`*****.***&#x20;

#### **Тип undefined** <a href="#toc_2" id="toc_2"></a>

Тип ***`undefined`***, так же как и **`null`** является и *типом* и *значением*. **`undefined`** в дословном переводе означает **не определено**. Если переводить с точки зрения **ЯП**, то **`undefined`**&#x43D;ужно понимать как **значение не присвоено**.

К примеру:

```javascript
let agreementAccepted;
```

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

В мире профессиональной разработки нужно четко понимать разницу между этими типами.

**Запомни раз и навсегда!** Использовать ***`undefined`*** уместно только в тех местах кода, где ты хочешь проверить существует ли значение как таковое или была ли чем-то инициализирована переменная.

Если хочешь инициализировать переменную с пустым значением, то используй только ***`null`.*** Никаких осознанных переменных с присвоенным в неё значением ***`undefined`*** в коде быть не должно!

Мы хотим инициализировать переменную возраста с пустым значением:

```javascript
let age; // не надо так
let age = undefined; // не надо так
let age = null; // только так!
```
