What are closures in javascript?

A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment). In other words, a closure gives you access to an outer function’s scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time. Closures are useful because they let you associate data (the lexical environment) with a function that operates on that data.

0_I48UuH2eHczWVeUd.png