闭包:
函数内部嵌套一个函数
,内部函数引用外部函数的数据
,内部函数称之为闭包
示例代码
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)
}
);
})