闭包(Closure)是指在函数内部创建的函数,它可以访问其外部函数作用域中声明的变量和参数,即使外部函数已经执行完毕,这些变量仍然可以被内部函数访问和操作。换句话说,闭包可以“记住”并访问其词法作用域,即定义时的作用域,而不是调用时的作用域。
一个闭包通常由两部分组成:
内部函数:在外部函数内部定义的函数。
外部函数作用域:内部函数可以访问的外部函数的变量和参数。
说的通俗一点,就是大函数包小函数,小函数可以访问和调用大函数的变量和参数,小函数就算是闭包。
闭包在JavaScript中具有重要的作用,它可以用于创建私有变量、实现模块化、延迟执行等。下面是一个简单的闭包示例,里面的innerFunction是一个闭包:
function outerFunction() {
var outerVariable = 'I am outer!';
function innerFunction() {
console.log(outerVariable); // 内部函数可以访问外部函数的变量
}
return innerFunction;
}
var innerFunc = outerFunction(); // 调用外部函数,得到内部函数
innerFunc(); // 输出: "I am outer!"