← Назад к вопросам
В каких случаях 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"
Ключевые выводы
typeofвозвращает"object"для многих типов, не только для чистых объектовnullвозвращает"object"— это знаменитый баг JavaScript- Массивы возвращают
"object"— используйтеArray.isArray() - Для более точных проверок используйте
instanceofили другие методы - Это важно знать при валидации данных и проверке типов