首页 » 文章 » 文档 » js 常见问题 » 闭包是什么,有什么特性?有什么负面影响?

闭包是什么,有什么特性?有什么负面影响?

  • 回顾:作用域和自由变量
  • 闭包应用场景:函数作为参数被传入,函数作为返回值被返回
  • 回顾:自由变量的查找,要在函数定义的地方(而非执行的地方)
  • 影响:变量会常驻内存,得不到释放。闭包不要乱用
// 自由变量示例 - 内存会被释放
let a = 0

function fn1() {
let a1 = 100

function fn2() {
let a2 = 200

function fn3() {
let a3 = 300
return a + a1 + a3 + a3
}
}

fn2()
}

fn1()

// 闭包 函数作为返回值 - 内存不会被释放
function create() {
let b = 100 // b 被返回,暂时不会释放
return function () {
console.log(b)
}
}

let fn2 = create()
let b = 200
fn2() // 100

// 闭包 函数作为参数 - 内存不会被释放
function print(fn){
let c = 200
fn()
}

let c =100 // b 被传入,暂时不会释放
function fn3(){
console.log(c)
}
print(fn3) // 100

»js 常见问题

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll to Top