闭包(Closure)是指在函数内部创建的一个函数,这个函数可以访问到外部函数的变量和参数,即使外部函数已经返回。闭包使用起来非常灵活,可以用来保持变量的状态,避免全局变量,以及创建私有的属性和方法。
在JavaScript中,每当一个函数被创建时,都会同时创建一个执行环境(Execution Context),这个环境会存储变量、参数、内部函数等信息。如果内部函数(闭包)引用了外部函数的变量或参数,那么这个变量或参数会被存放在内存中,即使外部函数执行完毕后,这个变量或参数依然存在于内存中供内部函数使用。这种机制就是闭包。