# Типы данных. Оператор typeof

[![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-M8VfaC9buABNSJgGB-G%2F-M8VfppufJPgdjHKNtmx%2Fimg-11.png?alt=media\&token=3d1bd429-4acd-4dde-aee2-5f1883f3fae4)

Сейчас рассмотрим с тобой такую ситуацию: ты писал код, написал тысячу миллионов строк, у тебя 100500 переменных и ты уже не помнишь, какой тип данных лежит в конкретной переменной, что делать, как узнать?

#### **Оператор typeof** <a href="#toc_1" id="toc_1"></a>

Этот оператор пояснит тип переменной. Сразу же к использованию:

```javascript
typeof 'оператор typeof'; // результат: string
typeof 100500; // результат: number
typeof undefined; // результат: undefined
typeof true; // результат: boolean
typeof null; // результат: object (??? что? как это возможно?)
```

Как видим, оператор почти всегда говорит правду. Но, вот с типом `null` происходит заминка. Просто нужно запомнить, что это **известная ошибка**, которую не могут поправить из-за сохранения совместимости и всякое такое, ну, короче, просто запомни, что `typeof` никогда не расскажет тебе правды о `null`.

Кстати, оператор можно вызывать **2-я способами**:

```javascript
typeof('оператор'); // (1)
typeof 'оператор'; // (2)
```

Оба случая и `(1)` и `(2)` имеют жизнь, как использовать - решать только тебе, но я бы рекомендовал вызывать его как **стандартную функцию**, т.е. как показано в случае `(1)`.

#### **Практическое применение оператора** <a href="#toc_2" id="toc_2"></a>

Так как в **JavaScript** **НЕТ** **строгой типизации**, но зачастую нужно проверить тип переменной для совершения каких-либо операций, приходится использовать данный вид оператора. Так что, это твой один из первых полезных братанов в **JavaScript**. Запомни его и то, что он иногда говорит не правду  =)
