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