Hackernoon logoJavaScript Closures Explained to Kids by@papercoding22

JavaScript Closures Explained to Kids

Author profile picture

@papercoding22Paper Coding

I am Front-end developer

Lazy to read. Show me the code.

// πŸ‘Ά How to explain closure to a 5 years old kid

* Closure is like a candy factory
* You send the factory an order to make candies for you with your favorite flavor.
* The factory will pick the right expert for you,
* And it send back to you an expert's contact.
* Now whenever you need, you just call and submit the quantity.
* That expert will take care all the rest for you.
const candyFactory = (flavor) => {
  const experts = {
    Chocolate: {
        name: 'Tim',
        secretRecipe: '🍫',
    Strawberry: {
        name: 'Alex',
        secretRecipe: 'πŸ“',       
  const expertByFlavor = experts[flavor];
  return (quantity) => {
    return `${quantity} ${flavor} candies are made 
                by ${expertByFlavor.name}.`; 

// The factory doesn't want to send you their experts,
// Because it may leak their top secret recipe. 
// Instead, they just send you a way to call the expert (as a function) 
// and waiting for your calling to order anytime.
// Now the factory keeps your flavor and your expert.
// In conclusion:
// Only the inner function can access outer function'scope.
// Only the factory can directly tell the expert what to do.
const chocolateExpert = candyFactory('Chocolate');
const stawberryExpert = candyFactory('Strawberry');

// 1000 Chocolate candies are made by Tim.
// 500 Strawberry candies are made by Alex.

Try it atΒ JSFiddle


Join Hacker Noon

Create your free account to unlock your custom reading experience.