<script>
function Out(params) {
var a = 'hello world'
function getA() {
console.log(a)
}
function setA(params) {
a = params
console.log(a)
}
return {
getA,
setA
}
}
var f = Out()
f.getA() //hello world
f.setA('hi') //hi
f.getA() //hi
</script>
结论:嵌套内部函数共享一个闭包,并且这个闭包的名字是嵌套外部函数的函数名
如果有多个变量被引用,那么这几个属性会被封装,其实即使是只有一个属性也会被封装,因为闭包就是一个对象,包含了被引用变量,作为属性
image.png
image.png
什么是闭包:闭包就是一个对象,
包涵一个变量的对象,
浏览器中的Closure对象。
闭包的作用:封装一组操作为原子操作
或者说封装对一个变量的操作。
产生or死亡:嵌套内部函数声明时产生
嵌套内部函数作为垃圾对象时死亡,也就是说包含该闭包引用的对象死亡他也就死亡。或者说引用他的对象死亡他也就死亡
网友评论