The typeof operator in JavaScript is used to determine the type of a given value or variable. It returns a string indicating the type of the operand. The typeof operator is particularly useful for checking the data type before performing operations or when debugging code.
Syntax
typeof operand
operand: The value or variable whose type you want to check.
Let's go through the various data types in JavaScript and see what the typeof operator returns for each.
1. Primitive Types
String: A sequence of characters enclosed in quotes (single, double, or backticks).
string.js
let str = "Hello, World!"; console.log(typeof str); // Output: "string"
Output
String
Number: Represents both integers and floating-point numbers.
number.js
let num = 42; console.log(typeof num); // Output: "number" let floatNum = 3.14; console.log(typeof floatNum); // Output: "number"
Output
number number
Boolean: Represents a logical entity and can have two values: true or false.
boolean.js
let isActive = true; console.log(typeof isActive); // Output: "boolean"
Output
boolean
Undefined: A variable that has been declared but not assigned a value.
undefined.js
let undefinedVar; console.log(typeof undefinedVar); // Output: "undefined"
Output
undefined
Symbol: Introduced in ECMAScript 2015 (ES6), a Symbol is a unique and immutable primitive value.
symbol.js
let sym = Symbol('unique'); console.log(typeof sym); // Output: "symbol"
Output
symbol
BigInt: Introduced in ECMAScript 2020, BigInt is used for integers that are too large to be represented by the Number type.
bigint.js
let bigIntNum = 123456789012345678901234567890n; console.log(typeof bigIntNum); // Output: "bigint"
Output
Bigint
2. Object Types
Object: A collection of key-value pairs. Objects include arrays, functions, dates, etc. Arrays are objects in JavaScript, so the typeof operator returns "object" for arrays as well. Functions are also objects in JavaScript, but the typeof operator returns "function" for functions. The typeof operator returns "object" for date objects as well.
objects.js
let obj = { name: "Alice", age: 30 }; console.log(typeof obj); // Output: "object" let arr = [1, 2, 3, 4]; console.log(typeof arr); // Output: "object" function greet() { return "Hello!"; } console.log(typeof greet); // Output: "function" let date = new Date(); console.log(typeof date); // Output: "object"
Output
object object function object
Points to remember
1. typeof null returns "object"
2. Even though functions are technically objects, typeof treats them as a special case and returns "function".
3. type of an undeclared variable returns "undefined"
Usecase 1: Checking for Numbers Before Performing Arithmetic Operations.
usecase1.js
function addNumbers(a, b) { if (typeof a !== "number" || typeof b !== "number") { throw new Error("Both arguments must be numbers"); } return a + b; } try { let x = 10; let y = "5"; console.log(addNumbers(x, y)); // This will throw an error } catch (error) { console.error(error.message); }
Output
Both arguments must be numbers
Usecase 2: Handling Different Types in Functions.
usecase2.js
function processInput(input) { if (typeof input === "string") { console.log("Processing string..."); } else if (typeof input === "number") { console.log("Processing number..."); } else if (typeof input === "boolean") { console.log("Processing boolean..."); } else if (typeof input === "undefined") { console.log("Processing undefined..."); } else if (typeof input === "object") { if (input === null) { console.log("Processing null..."); } else if (Array.isArray(input)) { console.log("Processing array..."); } else { console.log("Processing object..."); } } else if (typeof input === "function") { console.log("Processing function..."); } else if (typeof input === "symbol") { console.log("Processing symbol..."); } else if (typeof input === "bigint") { console.log("Processing bigint..."); } else { console.log("Unsupported type"); } } // Test cases processInput(42); // Output: Processing number... processInput("Hello"); // Output: Processing string... processInput(true); // Output: Processing boolean... processInput(undefined); // Output: Processing undefined... processInput(null); // Output: Processing null... processInput({ name: "Alice" }); // Output: Processing object... processInput([1, 2, 3]); // Output: Processing array... processInput(function() {}); // Output: Processing function... processInput(Symbol("unique")); // Output: Processing symbol... processInput(12345678901234567890n);// Output: Processing bigint...
Output
Processing number... Processing string... Processing boolean... Processing undefined... Processing null... Processing object... Processing array... Processing function... Processing symbol... Processing bigint...
No comments:
Post a Comment