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"
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 falsetypeof 7 < 5 ? "Correct!" : false; // Returns false
typeof (7 > 5 ? "Correct!" : false); // Returns "string"typeof (7 < 5 ? "Correct!" : false); // Returns "boolean"
The snippet above returned the correct results only where we used parentheses to evaluate the binary and ternary operators.