闭包是指在 JavaScript 中,内部函数可以访问外部函数作用域中的变量,即使外部函数已经执行完毕。
当内部函数引用了外部函数的变量时,如果外部函数执行完毕后,内部函数仍然保持对外部函数作用域的引用,这种引用机制就形成了闭包。
function outerFunction() {
let outerVariable = 'I am from outer function';
function innerFunction() {
console.log(outerVariable); // 内部函数引用了外部函数的变量
}
return innerFunction;
}
const myFunction = outerFunction();
myFunction(); // 输出 'I am from outer function'
在上面的例子中,outerFunction
返回了 innerFunction
,并被赋值给 myFunction
。即使 outerFunction
已经执行完毕,innerFunction
仍然可以访问并使用 outerVariable
变量,这就是闭包的作用。
闭包在 JavaScript 中非常有用,可以用于封装私有变量、实现柯里化、创建模块等。但要注意过度使用闭包可能会导致内存泄漏,因为闭包会持有外部函数作用域中的变量,如果不及时释放,这些变量和函数会一直存在于内存中。
Was this helpful?
0 / 0