闭包
就是一种函数,一种可以访问另外一个函数内部变量的函数
闭包作用1: 可以让外界间接访问到函数内部变量
闭包作用2: 延长局部变量的生命周期,所以它不会被销毁,所以不要大量使用闭包
function fn1 () {
let num = 10
return function inner () {
console.log(num)
}
}
// res就是返回的那个闭包函数
let res = fn1()
res() // 相当于间接的访问了num
闭包的几种形式
基本写法:闭包函数作为返回值返回出去
function foo () {
let num = 10
// 最基本的闭包写法
return function () {
let xx = 'abc'
console.log(num)
}
}
let res = foo()
res()
赋值法: 闭包函数赋值给全局变量
let fn
function foo2 () {
let num = 99
// 也是一个闭包
fn = function () {
console.log(num)
}
}
foo2()
fn()
闭包变量是形参:
// 函数的形参,也可以理解为是一个函数的内部变量
function foo3(a, b) {
// 也是一个闭包
return function () {
console.log(a, b)
}
}
let res3 = foo3('abc', 166)
res3()