I had an interesting question in a technical interview. I had to create function which output behaves this way.
counter() // 0
counter() // 1
counter() // 2
Each time counter is executed it should log number incremented by one. I immediately realized the idea of interviewer was to see if I understand closures.
This was my solution.
const counter = (() => {
let count = -1;
return () => {
console.log(++count);
};
})()
counter();
counter();
counter();
counter();
As you could see I also used Immediately Invoked Function Expression (IIFE) which creates its own scope instantly.
Conclusion
The more experienced I am, the more I realize how important is Javascript: The good parts
book. Most of the abstractions used in js libraries/frameworks are implemented above ideas described in this book.
If you want know more about closures you can read about them in chapter 4 (section Closure
).
Top comments (0)