Closures allow blocks of code to access variables from the enclosing scope even after the scope has closed. This allows closures to maintain state even when passed around or returned from functions. Closures originated in Lisp and are supported in many modern languages like Python, Ruby, and C#, providing benefits like elegant iteration, filtering, and caching of results. While objects can also be used to inject strategy or share state, closures provide a more concise syntax and avoid wrapper classes in many cases.