Closures are blocks of code that you can pass to functions as parameters or store as variables or constants to be used later. Closures capture the state of the other variables around them. These constructs are often used when you want to perform operations that don’t need to happen immediately but depend on local state. Closures are also used frequently with functions to give callers a way of adding behavior to a function that would normally be out of scope.