闭包是指一个函数能够访问其定义时的上下文环境中的变量,即使该函数在不同的上下文环境中被调用。闭包有两个特点:1)可以延长变量的生命周期;2)可以使得函数内部的变量被封装起来,只能在函数内部被访问。在JavaScript中,闭包可以通过将函数作为返回值来实现。例如:
function counter() { var count = 0; return function() { count++; console.log(count); }; }
var c = counter(); c(); // 1 c(); // 2 c(); // 3
在上面的例子中,counter函数返回了一个匿名函数,该匿名函数可以访问counter函数定义时的变量count。每次调用c函数时,count的值都会加1,而且count变量的生命周期也随着c函数的生命周期被延长了。