Codectionary / Developer documentation / JavaScript

typeof and instanceof

typeof returns a string indicating the general type of a value (like "string", "number", "object"). instanceof checks whether an object is an instance of a specific class or constructor function by walking its prototype chain, useful for distinguishing between different object types like Array, Date, or custom classes.

Syntax

typeof value
object instanceof Constructor

Examples

typeof for Primitive Types

Checking the type of simple values.

console.log(typeof "hello");  // "string"
console.log(typeof 42);       // "number"
console.log(typeof true);     // "boolean"
console.log(typeof undefined);// "undefined"
console.log(typeof function(){}); // "function"
console.log(typeof {});       // "object"
console.log(typeof []);       // "object" - arrays are objects too, typeof cannot distinguish them

instanceof for Object Types

Distinguishing between different kinds of objects.

const arr = [1, 2, 3];
const date = new Date();

console.log(arr instanceof Array);  // true
console.log(arr instanceof Object); // true - arrays are also objects
console.log(date instanceof Date);  // true
console.log(date instanceof Array); // false

class Dog {}
const rex = new Dog();
console.log(rex instanceof Dog); // true

Best practices

  • Use typeof for primitives (string, number, boolean, etc.) and Array.isArray() specifically for arrays, since typeof cannot tell arrays apart from plain objects
  • Use instanceof to check if an object was created by a specific class or constructor, especially useful in error handling (error instanceof TypeError)
  • Remember instanceof checks the prototype chain, so it can behave unexpectedly across different execution contexts (like iframes) - it is not foolproof for all edge cases
  • Combine typeof checks with early returns to validate function inputs before processing them

At a glance

Purpose
Application logic and interaction
File extension
.js ยท .mjs
Runs in
Browsers and JavaScript runtimes
Usually used with
HTML, CSS and Web APIs

Specifications & further reading

Related JavaScript documentation