A closure is a function that remembers the variables from its outer scope. It is useful for encapsulation and private variables.
function outer(){
let counter = 0;
return function(){
counter++;
console.log(counter);
}
}
let inner = outer();
inner(); // 1
inner(); // 2