Skip to content
Latest: Publish JavaScript Packages to NPM Like a Pro!

typeof Operator Explained – What Is typeof in JavaScript?

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

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

typeof operand;

The operand represents a primitive or non-primitive value.

// 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

Section titled “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.