js基础知识 —— 闭包
闭包条件?
- 需要直接或间接的返回一个函数
- 内部函数需要访问外部函数的局部变量
优点?
- 延长变量的生命周期,在函数外可以使用函数内的变量
缺点?
- 执行空间不会被销毁,大量使用会造成内存泄露
function outner () {
let a = 100
let obj = {
name:'潇崇',
age: 23
}
function inner () {
console.log(a) //内部函数需要访问外部函数的局部变量
console.log(obj)
return a
}
// 直接返回一个函数
return inner //需要直接或间接的返回一个函数
}
const newFn = outner()
// console.log(newFn) // 输出函数体 inner
// newFn()
let num = newFn()
console.log(num)