Skip to content
Announcing the new Pro Zone. Check it out!

typeof Operator Explained – What Is typeof in JavaScript?

The JavaScript typeof operator returns the data type of a specified operand.

Syntax of the typeof Operator

The typeof operator accepts one operand. Here’s the syntax:

typeof operand;

The operand represents a primitive or non-primitive value.

Example

// String typeof data:
typeof "CodeSweetly"; // Returns "string"
typeof `CodeSweetly ${new Date().getFullYear()}`; // Returns "string"
// Number typeof data:
typeof 123; // Returns "number"
typeof Infinity; // Returns "number"
typeof NaN; // Returns "number"
typeof new Date().getFullYear(); // Returns "number"
// Object typeof data:
typeof { name: "Oluwatobi", company: "CodeSweetly" }; // Returns "object"
typeof ["Oluwatobi", "CodeSweetly"]; // Returns "object"
typeof null; // Returns "object"
typeof new Date(); // Returns "object"
// Undefined typeof data:
typeof undefined; // Returns "undefined"
typeof undeclaredVariable; // Returns "undefined"
let variableDeclaredWithNoAssignedValue;
typeof variableDeclaredWithNoAssignedValue; // Returns "undefined"
// Function typeof data:
typeof function getMyType() {}; // Returns "function"
typeof Math.random; // Returns "function"
typeof "Oluwatobi".constructor; // Returns "function"
// Boolean typeof data:
typeof true; // Returns "boolean"
typeof false; // Returns "boolean"
// BigInt typeof data:
typeof 123n; // Returns "bigint"
typeof 9n; // Returns "bigint"

Try Editing It

The snippet above used the typeof operator to return the data types of the specified values.

Important Stuff to Know about the typeof Operator

  • typeof null === object is a bug from JavaScript’s first version.
  • The typeof operator has higher precedence than ternary or binary operators. Therefore, you need parentheses to evaluate non-unary operands correctly. For instance, consider the following snippet:
typeof true + "Love"; // Returns "booleanLove"
typeof (true + "Love"); // Returns "string"
typeof 7 > 5 ? "Correct!" : false; // Returns false
typeof 7 < 5 ? "Correct!" : false; // Returns false
typeof (7 > 5 ? "Correct!" : false); // Returns "string"
typeof (7 < 5 ? "Correct!" : false); // Returns "boolean"

Try Editing It

The snippet above returned the correct results only where we used parentheses to evaluate the binary and ternary operators.