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

Какой тип данных возвращает typeof?

1.3 Junior🔥 211 комментариев
#JavaScript Core

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

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

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

Оператор typeof в JavaScript

typeof — это унарный оператор, который возвращает строку (string), содержащую тип данных переданного значения. Несмотря на то, что результат выглядит как обычное слово (например, "number" или "string"), это именно текстовое значение.

Возвращаемое значение

Оператор typeof возвращает строку (String), одно из следующих значений:

typeof 42                    // "number"
typeof "hello"              // "string"
typeof true                  // "boolean"
typeof undefined             // "undefined"
typeof { name: "John" }      // "object"
typeof [1, 2, 3]             // "object"
typeof function() {}         // "function"
typeof Symbol("id")          // "symbol"
typeof 100n                  // "bigint"

Примеры использования

const result = typeof 5;
console.log(result);         // "number"
console.log(typeof result);  // "string" — сам результат это строка!

const type = typeof null;    // "object" (известный баг)
const arr = typeof [];       // "object" (массивы это объекты)

Важные особенности

1. Это всегда строка

Результат оператора typeof — это строка, поэтому можно сравнивать с текстом:

if (typeof value === "string") {
  console.log("Это строка");
}

2. Историческая багфишность

Некоторые типы определяются неточно:

typeof null          // "object" (исторический баг ES1)
typeof [1, 2, 3]     // "object" (массивы это объекты)
typeof new Date()    // "object" (объекты-обёртки)

3. Типы в JavaScript

Полный набор типов, которые возвращает typeof:

  • "undefined" — для undefined
  • "boolean" — для true/false
  • "number" — для чисел (включая NaN и Infinity)
  • "string" — для строк
  • "symbol" — для символов (ES6+)
  • "bigint" — для больших целых чисел (ES2020+)
  • "object" — для объектов, массивов, null
  • "function" — для функций (функции это подтип объектов)

Практическое применение

function checkType(value) {
  const type = typeof value;
  
  if (type === "function") {
    console.log("Это функция, можно вызвать");
  } else if (type === "object" && Array.isArray(value)) {
    console.log("Это массив");
  } else if (type === "object" && value !== null) {
    console.log("Это объект");
  } else if (type === "undefined") {
    console.log("Значение не определено");
  }
}

checkType(() => {}); // "Это функция, можно вызвать"
checkType([1, 2]);   // "Это массив"

Проверка типов для специальных случаев

Для более точной проверки типов используют дополнительные методы:

// Проверка массива
Array.isArray([1, 2, 3])  // true

// Проверка null (typeof не подходит)
value === null            // точная проверка

// Проверка объекта-обёртки
Object.prototype.toString.call(new Date())  // "[object Date]"

// instanceof для классов и конструкторов
value instanceof Date
value instanceof Array

Итоговая цифра

typeof возвращает строку (String) — это основной ответ на вопрос. Результат работы оператора — это текстовое значение, которое можно сравнивать, передавать и обрабатывать как обычную строку.

Какой тип данных возвращает typeof? | PrepBro