JS: typeof Operator

By Xah Lee. Date: . Last updated: .
typeof value

Return a string that represents the Type of value.

Return one of:

  • "object" for Object or null.
  • "function" for function.
  • "string" for string.
  • "number" for number, including NaN and Infinity
  • "bigint" for bigint.
  • "undefined" for undefined.
  • "boolean" for true or false.

πŸ’‘ TIP: typeof is a operator, not a function. This means, you do not need parenthesis for the argument. e.g. typeof 3 is valid. Use parenthesis typeof(expr) only when expr is complicated.

console.log(typeof undefined === "undefined");

console.log(typeof "abc" === "string");

console.log(typeof true === "boolean");
console.log(typeof false === "boolean");

console.log(typeof 3 === "number");
console.log(typeof NaN === "number");
console.log(typeof Infinity === "number");

console.log(typeof 3n === "bigint");
// type of some standard objects
console.log(typeof {} === "object");
console.log(typeof [3, 4] === "object");
console.log(typeof (new Date()) === "object");
console.log(typeof /x/ === "object");
console.log(typeof JSON === "object");
console.log(typeof Math === "object");
console.log(typeof new Map() === "object");
console.log(typeof (function () {}) === "function");
console.log(typeof ((x) => x) === "function");
console.log(typeof class MyClass {} === "function");

Null is Not an Object

πŸ›‘ WARNING: typeof null return "object" is a bug and we are stuck with it. (it should return "null") γ€”see null〕

Function is Also Object

πŸ›‘ WARNING: by JavaScript spec, there is no value type named β€œfunction”. typeof return "function" is a programing convenience.

JavaScript. Value Types