js高级-闭包
闭包到底是什么,在理解这个问题之前,我们先来了解一下,闭包是如何产生的,了解完闭包的产生才能对闭包有一个更好的理解
闭包的产生条件有三个:
1. 函数嵌套
2. 内嵌套函数调用了其外层嵌套函数的数据(变量/方法)
3. 执行外层嵌套函数
闭包是由外层嵌套函数执行,当其内部嵌套函数引用了外层嵌套函数的数据,闭包就产生了
// 1.编写一个嵌套函数 function fun1() { var a =10; function fun2(){ console.log(a);// 2.内部嵌套函数引用了外层嵌套函数的数据 } } //3.执行外层函数==>产生闭包 注意:闭包是存在于内嵌套函数中 fun1(); //4.函数执行完毕,包含闭包的函数对象成为垃圾对象.闭包消失(死亡)
闭包的生命周期: 编写一个嵌套函数==>内嵌套函数引用了外嵌套函数的数据==>执行外层函数==>函数提升,执行函数定义==> 产生闭包==>外层函数执行完毕==>包含闭包的函数对象成为垃圾对象==>闭包死亡(消失)
闭包导航是什么? 在我的理解里,闭包是一个对象,一个用于存储被内嵌套函数引用数据的对象,当然这只是我的观点.很大一部分人认为,闭包是嵌套的内部函数
21:02:54