Introduction
Closures let you store blocks of code that can be used later. Knowing they are reference types helps you understand how they behave when copied or passed around.
When you want to pass a piece of code to a function to run later.
When you want to keep a function with some saved data inside it.
When you want multiple parts of your program to share the same block of code and its data.
When you want to avoid copying big chunks of code and just share one copy.