函数嵌套函数,内部函数就是闭包
正常情况下,函数执行完成,内部变量会销毁(释放内存空间)
内部函数没有执行完成,外部函数变量不会被销毁
闭包应用:(封装)
let a = 10
let b = 20
function add() {
return a + b
}
function sub() {
return a - b
}
let result1 = add()
let result2 = sub()
console.log(result1, result2)
如上代码,定义了很多全局变量,在项目协同开发的时候,大家都定义全局变量,容易造成冲突,此时我们需要用闭包把这些代码给封装起来
我们可以定义一个模块module,把声明的变量放入module中,利用闭包实现了一个模块化的功能
let module = (function () {
let a = 10
let b = 20
function add() {
return a + b
}
function sub() {
return a - b
}
return {
add,
sub,
}
})()
let result1 = module.add()
let result2 = module.sub()
console.log(result1, result2)