闭包:
函数内部嵌套一个函数
,内部函数引用外部函数的数据
,内部函数称之为闭包
示例代码
function fn1(){ var a = 10 function fn2(){ console.log(++a); } function fn3(){ console.log(--a); } return {fn2,fn3} } let {fn2,fn3} = fn1() fn2() // 11 fn3() // 10
在上面的代码示例中 存在两个闭包函数 fn2,fn3
闭包的生命周期:
- 产生: 当嵌套的内部函数定义完毕之后 执行完之后 就产生
- 死亡: 当嵌套的内部函数不被外界需要的时候,就被垃圾回收
闭包产生的条件是:
- 函数嵌套一个函数
- 内部函数引用外部函数的数据(变量 / 函数)
- 执行外部函数
闭包的作用:
- 延长局部变量的生命周期哦
- 让函数外部操作函数内部的数据( 变量 / 函数)
闭包的缺点:
- 容易造成内存泄漏(内存不能被释放,就会咋成ncxl)
- 手动释放null
// 手动释放 fn2 = null; fn3 = null;
<div>哈哈哈哈</div> <div>嘿嘿嘿嘿</div> //想要获取到标签中的内容 let divs = document.querySelectorAll("div"); divs.forEach((item) => { let innerhtml = item.innerHTML item.addEventListener("click", function () { // console.log(item.innerHTML); console.log(innerhtml) } ); })