Implementing modules – the old way
Before ES6, JavaScript had never supported modules natively. Developers used other techniques and third-party libraries to implement modules in JavaScript. Using Immediately-Invoked Function Expression (IIFE), Asynchronous Module Definition (AMD), CommonJS, and Universal Module Definition (UMD) are various popular ways of implementing modules in ES5. As these ways were not native to JavaScript, they had several problems. Let's take an overview of each of these old ways of implementing modules.
Immediately-Invoked Function Expression (IIFE)
We've briefly discussed IIFE functions in earlier chapters. It is basically an anonymous function that is executed automatically. Let's take a look at one example. This is how a typical old JS module that uses IIFE looks:
//Module Starts (function(window){ const sum =(x, y) => x + y; const sub = (x,y) => x - y; const math = { findSum(a, b) { return sum(a, b) }, findSub(a,b) { return sub(a, b) } } window.math...