闭包是指一个函数能够访问到在其外部定义的变量,并将这些变量保存在函数内部的一个对象中,使得在函数外部也能够使用这些变量。在JavaScript中,函数是第一类对象,因此函数可以作为参数传递、返回值等,闭包是函数与其所捕获的变量之间的共同体现。使用闭包的常见场景包括模块化、封装、延迟计算、缓存等等。以下是一个使用闭包实现计数器的例子:
function counter() {
var count = 0;
return function() {
return ++count;
}
}
var c = counter();
console.log(c()); // 1
console.log(c()); // 2
console.log(c()); // 3
在上面的例子中,counter函数返回了一个内部函数,内部函数能够访问到counter函数中定义的局部变量count,每次调用内部函数都会使count加1,从而实现了计数器的功能。