# Оператор typeof

Оператор `typeof` позволяет определить тип параметра (число, строка, объект). Оператор возвращает строку, содержащую тип (`'number'`, `'string'`, `'object'`).

Для `null` оператор возвращает `'object'` (это признанная ошибка языка). Для функций оператор возвращает `'function'`. Это сделано для удобства, так как типа `'function'` не существует.

## Синтаксис

У оператора `typeof` есть `2` синтаксиса (оба синтаксиса работают одинаково):

`typeof параметр; typeof(параметр);`

## Пример

Давайте посмотрим, как `typeof` работает с числом:

`typeof 1;`

В результате выполненного кода мы получим значение `number`:

`'number'`

## Пример

Теперь давайте зададим в параметре строку:

`typeof 'str';`

Результат выполнения кода:

`'string'`

## Пример

Теперь укажем в параметре булевое значение `true`:

`typeof true;`

Результат выполнения кода:

`'boolean'`

## Пример

Давайте посмотрим какой тип у значения `undefined`:

`typeof undefined;`

После выполнения кода мы получим также `undefined`:

`'undefined'`

## Пример

Теперь давайте узнаем тип пустого объекта:

`typeof {};`

Результат выполнения кода:

`'object'`

## Пример

А теперь узнаем тип пустого массива:

`typeof [];`

В результате также получим `'object'`:

`'object'`

## Пример

Давайте узнаем тип значения `null`:

`typeof null;`

В результате также получим `'object'`, что является признанной ошибкой языка:

`'object'`

## Пример

Теперь определим тип пустой функции:

`typeof function() {};`

После выполнения кода мы получим `'function'`, несмотря на то, что такого типа не существует. Данная строка нужна для удобства пользователя при определении функции:

`'function'`

## Пример

Напишем функцию, которая будет выводить только числа:

`function printNumber(number) { if (typeof number === 'number') { console.log(number); } } printNumber(2); printNumber('str'); printNumber(3);`

## Смотрите также

- функцию `isNaN`,
  которая осуществляет проверку на `NaN`
- функцию `isFinite`,
  которая проверяет число на конечность

←→
↑
en ru