1. create a function within a function 2. return its definition out 3. store initial (outer) function under a new label ##### Example: ```js function outer() { let counter = 0; // inner function function incrementCounter() { counter ++; return counter; } // return inner's definition return incrementCounter; } // store in const count1 = outer(); const count2 = outer(); count1(); //➞ 1 count1(); //➞ 2 count1(); //➞ 3 count2(); //➞ 1 ```