Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить тип переменной

Короткий ответ

Оператор typeof возвращает тип в виде строки:

console.log(typeof 42);
console.log(typeof 'hello');
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof (() => {}));

Результат:

number
string
boolean
undefined
function

Особые случаи

Для null и массивов typeof говорит object. Проверяйте их отдельно:

console.log(typeof null, typeof [1, 2]);
console.log(Array.isArray([1, 2]), [1, 2] === null);

Результат:

object object
true false

Объекты классов

instanceof проверяет, каким классом создан объект:

console.log(new Date() instanceof Date);
console.log(new Error('oops') instanceof Error);
console.log([] instanceof Object);

Результат:

true
true
true

Универсальная функция

Object.prototype.toString даёт точное название для любого значения:

const typeOf = (value) => Object.prototype.toString.call(value).slice(8, -1);
 
console.log(typeOf(null), typeOf([]), typeOf(new Date()), typeOf(/a/), typeOf(new Map()));

Результат:

Null Array Date RegExp Map

Частая ошибка

Проверка typeof value === 'object' пропускает null, а чтение свойства у него выбрасывает ошибку:

const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
 
console.log(typeof null === 'object');
console.log(isObject(null), isObject({}), isObject([]));

Результат:

true
false true false

Функции из этого ответа

  • typeof — Возвращает строку с типом значения.
  • Array.isArray — Проверяет, является ли значение массивом.
  • instanceof — Проверяет, создан ли объект классом (или его наследником).

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.