← Назад к вопросам

В каких случаях JS возвращает тип Object

1.0 Junior🔥 111 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Когда JavaScript возвращает тип Object

В JavaScript оператор typeof возвращает строку "object" в нескольких случаях, и это часто является источником путаницы для разработчиков. Это происходит не только для объектов, но и для других типов данных.

Все случаи, когда typeof возвращает "object"

1. Обычные объекты

const obj = { name: "Иван", age: 25 };
console.log(typeof obj); // "object"

const empty = {};
console.log(typeof empty); // "object"

2. Массивы

const arr = [1, 2, 3];
console.log(typeof arr); // "object"

const emptyArr = [];
console.log(typeof emptyArr); // "object"

Это частая ошибка при проверке типов! Для проверки массива используйте Array.isArray():

Array.isArray([1, 2, 3]); // true
Array.isArray({}); // false

3. null (самый странный случай)

const nothing = null;
console.log(typeof nothing); // "object"

Это известный баг JavaScript, оставленный для совместимости. null НЕ является объектом!

4. Функции (в некоторых контекстах)

function myFunc() {}
console.log(typeof myFunc); // "function" (НЕ object)

const arrow = () => {};
console.log(typeof arrow); // "function"

Обычно функции возвращают "function", но вызываемые объекты могут быть объектами.

5. Дата (Date)

const date = new Date();
console.log(typeof date); // "object"

console.log(date instanceof Date); // true (правильная проверка)

6. Регулярные выражения (RegExp)

const regex = /abc/;
console.log(typeof regex); // "object"

const regex2 = new RegExp("abc");
console.log(typeof regex2); // "object"

7. Ошибки (Error объекты)

const err = new Error("Что-то пошло не так");
console.log(typeof err); // "object"

const customErr = new TypeError("Неверный тип");
console.log(typeof customErr); // "object"

8. Map и Set

const map = new Map();
console.log(typeof map); // "object"

const set = new Set();
console.log(typeof set); // "object"

9. WeakMap и WeakSet

const weakMap = new WeakMap();
console.log(typeof weakMap); // "object"

const weakSet = new WeakSet();
console.log(typeof weakSet); // "object"

10. Обернутые примитивы (boxing)

const numObj = new Number(42);
console.log(typeof numObj); // "object"

const strObj = new String("привет");
console.log(typeof strObj); // "object"

const boolObj = new Boolean(true);
console.log(typeof boolObj); // "object"

Очень редко используется, но это тоже объекты!

11. Символы (Symbols) - НЕ object

const sym = Symbol("мой символ");
console.log(typeof sym); // "symbol" (НЕ object)

Таблица всех типов данных

Значениеtypeof возвращаетТип данных
"строка""string"Примитив
123"number"Примитив
true"boolean"Примитив
undefined"undefined"Примитив
Symbol()"symbol"Примитив
BigInt(123)"bigint"Примитив
{}"object"Объект
[]"object"Объект
null"object"null (баг)
function() {}"function"Функция

Правильная проверка типов

// Проверка на null
if (value === null) {
  console.log("Это null");
}

// Проверка на массив
if (Array.isArray(value)) {
  console.log("Это массив");
}

// Проверка на дату
if (value instanceof Date) {
  console.log("Это Date");
}

// Проверка на тип объекта
if (value && typeof value === "object" && !Array.isArray(value)) {
  console.log("Это чистый объект");
}

// Проверка на функцию
if (typeof value === "function") {
  console.log("Это функция");
}

Практический пример: полезная функция для проверки

function getActualType(value) {
  if (value === null) return "null";
  if (Array.isArray(value)) return "array";
  if (value instanceof Date) return "date";
  if (value instanceof RegExp) return "regexp";
  if (value instanceof Map) return "map";
  if (value instanceof Set) return "set";
  return typeof value;
}

console.log(getActualType([1, 2, 3])); // "array"
console.log(getActualType(new Date())); // "date"
console.log(getActualType(null)); // "null"
console.log(getActualType(42)); // "number"

Ключевые выводы

  1. typeof возвращает "object" для многих типов, не только для чистых объектов
  2. null возвращает "object" — это знаменитый баг JavaScript
  3. Массивы возвращают "object" — используйте Array.isArray()
  4. Для более точных проверок используйте instanceof или другие методы
  5. Это важно знать при валидации данных и проверке типов
В каких случаях JS возвращает тип Object | PrepBro