Skip to main content
Практика завдань

Оператор typeof у JavaScript

Що таке typeof?

Оператор typeof повертає рядок, що вказує на тип операнду. Це найпростіший спосіб перевірити тип значення під час виконання програми.


Результати typeof

javascript
typeof 42; // "number" typeof "hello"; // "string" typeof true; // "boolean" typeof undefined; // "undefined" typeof Symbol("id"); // "symbol" typeof 42n; // "bigint" typeof function(){}; // "function" typeof {}; // "object" typeof []; // "object" ⚠️ typeof null; // "object" ⚠️ (історичний баг) typeof NaN; // "number" ⚠️

Повна таблиця посилань

ЗначенняРезультат typeof
42, 3.14, NaN, Infinity"number"
"hello", 'world', \template``"string"
true, false"boolean"
undefined"undefined"
null"object" ⚠️
Symbol()"symbol"
42n"bigint"
{}, [], new Date()"object"
function(){}"function"

Загальні підводні камені

typeof null === "object"

javascript
typeof null; // "object" — це відомий баг з моменту створення JavaScript // ✅ Правильна перевірка на null value === null; value == null; // перевіряє як null, так і undefined

Масиви є "об'єктами"

javascript
typeof []; // "object" // ✅ Перевірка на масиви Array.isArray([]); // true [] instanceof Array; // true Object.prototype.toString.call([]); // "[object Array]"

NaN є "числом"

javascript
typeof NaN; // "number" // ✅ Перевірка на NaN Number.isNaN(NaN); // true Number.isNaN("hello"); // false (не приводить до числа) isNaN("hello"); // true ⚠️ (спочатку приводить до числа)

Краща перевірка типів

Object.prototype.toString.call()

javascript
Object.prototype.toString.call(42); // "[object Number]" Object.prototype.toString.call("str"); // "[object String]" Object.prototype.toString.call(true); // "[object Boolean]" Object.prototype.toString.call(null); // "[object Null]" Object.prototype.toString.call(undefined); // "[object Undefined]" Object.prototype.toString.call([]); // "[object Array]" Object.prototype.toString.call({}); // "[object Object]" Object.prototype.toString.call(new Date()); // "[object Date]" Object.prototype.toString.call(/regex/); // "[object RegExp]" Object.prototype.toString.call(new Map()); // "[object Map]"

Практична утиліта для перевірки типу

javascript
function getType(value) { if (value === null) return "null"; if (Array.isArray(value)) return "array"; return typeof value; } getType(null); // "null" getType([]); // "array" getType({}); // "object" getType(42); // "number" getType(undefined); // "undefined"

typeof з неоголошеними змінними

javascript
// typeof безпечний з неоголошеними змінними typeof undeclaredVar; // "undefined" (без помилки!) // Без typeof — викликає помилку console.log(undeclaredVar); // ReferenceError!

Важливо:

Пам'ятайте про особливості: typeof null === "object" та typeof [] === "object". Використовуйте Array.isArray() для масивів, === null для перевірок на null, і Number.isNaN() для перевірок на NaN. Для точного визначення типу використовуйте Object.prototype.toString.call().

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань