How to use Closures In Javascript
- Inside the Immediately Invoked Function Expression (IIFE), we define an object Enum containing the enum values.
- We then return the result of calling createEnum(Enum), effectively creating a closure over the Enum object, allowing read-only access to its values through the returned function.
Example: This example shows how to create an enum using Closures.
const Colors = (function () {
const Enum = {
RED: 'RED',
GREEN: 'GREEN',
BLUE: 'BLUE'
};
return (key) => {
return Enum[key];
};
})();
console.log(Colors('RED'));
console.log(Colors('GREEN'));
console.log(Colors('BLUE'));
Output
RED GREEN BLUE
Note: Attempting to modify the enum directly will result in an error, as the values cannot be modified after the closure is created.
const Colors = (function () {
const Enum = {
RED: 'RED',
GREEN: 'GREEN',
BLUE: 'BLUE'
};
return (key) => {
return Enum[key];
};
})();
// Attempting to modify the enum
// This will throw an Reference error
Colors('RED') = 'YELLOW';
Output: This error occurs when trying to assign a new value to the enum, which is not allowed because the enum is created using closures, providing read-only access to its values.
How to Create Enums in JavaScript ?
An enum, short for “enumerated type”, is a special data type in programming languages that allows us to define a set of named constants. These constants are essentially unchangeable variables that represent a fixed collection of possible values. Each contants can be accessed by its name. Enums are very similar to constants but they offer more data structure. we will learn about creating enums in JavaScript, exploring their significance in code organization and readability, along with practical implementation approaches using closures and other techniques.
These are the following approaches:
Table of Content
- Using Object Literal with Object.freeze()
- Using ES6 Symbols
- Using Closures