typeof Operator in JavaScript

The typeof operator in JavaScript is used to determine the type of a given variable or expression. It returns a string indicating the type of the unevaluated operand.

Syntax

  typeof operand
  
  • operand can be any expression whose type is to be determined.

Return Values

The typeof operator returns one of the following strings:

  • "undefined": if the variable is undefined
  • "boolean": if the variable is a boolean
  • "number": if the variable is a number
  • "bigint": if the variable is a bigint
  • "string": if the variable is a string
  • "symbol": if the variable is a symbol
  • "object": if the variable is an object (including null and arrays)
  • "function": if the variable is a function

Examples

Basic Types

  console.log(typeof undefined); // "undefined"
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof 9007199254740991n); // "bigint"
console.log(typeof "Hello, World!"); // "string"
console.log(typeof Symbol("id")); // "symbol"
  

Objects and Functions

  console.log(typeof {name: "John", age: 30}); // "object"
console.log(typeof [1, 2, 3]); // "object"
console.log(typeof function() {}); // "function"
console.log(typeof null); // "object" (this is a known quirk in JavaScript)
  

Undefined Variables

  let a;
console.log(typeof a); // "undefined"
  

Checking Variables

  let number = 123;
if (typeof number === 'number') {
    console.log("This is a number.");
}
  

Special Cases

Null

Despite being an object, null is often considered a primitive value. The typeof operator returns "object" for null, which is a quirk of JavaScript.

  console.log(typeof null); // "object"
  

Arrays

Arrays are a special kind of object in JavaScript.

  let arr = [1, 2, 3];
console.log(typeof arr); // "object"
  

Functions

Functions are a subtype of objects, and the typeof operator returns "function" for them.

  function myFunction() {}
console.log(typeof myFunction); // "function"
  

Symbols

Symbols are a relatively new primitive type introduced in ECMAScript 6 (ES6).

  let sym = Symbol("foo");
console.log(typeof sym); // "symbol"
  

NaN

NaN stands for “Not-a-Number” and is a special numeric value representing an invalid number. The typeof operator returns "number" for NaN.

  let notANumber = NaN;
console.log(typeof notANumber); // "number"
console.log(NaN === NaN); // false, because NaN is not equal to anything, including itself
  

Undefined

A variable that has been declared but not assigned a value is undefined. The typeof operator returns "undefined" for such variables.

  let undefinedVar;
console.log(typeof undefinedVar); // "undefined"

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

Using typeof with Variables

The typeof operator can be particularly useful when working with variables whose type might change or is unknown.

  let value;

value = 42;
console.log(typeof value); // "number"

value = "Hello";
console.log(typeof value); // "string"

value = true;
console.log(typeof value); // "boolean"

value = {};
console.log(typeof value); // "object"

value = function() {};
console.log(typeof value); // "function"

value = NaN;
console.log(typeof value); // "number"

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