闭包

闭包

    先说闭包作用,闭包是为了长期使用函数内的变量,由于作用域的原因(不明白的可以看我的上一篇文章),函数外部是不能访问使用函数内部的变量的,但是我们如果想使用函数内部变量怎么办,这时候闭包就产生了,js函数执行完会自动删除不被使用的变量,这里面也涉及到浏览器的垃圾处理机制了,简单说一下,
两种垃圾处理机制,一中是引用计数,一种是标记清除,
    用计数就是 变量被引用了计数加1,如果引入计数为0说明没有被使用就会被清理,该方式会引起内存泄漏的原因是它不能解决循环引用的问题,也就是A里有个指针指向B ,B里有个指针指向A,这样引入计数都是2,就永远不会被释放,
    标记清除,如果函数执行结束时会检测函数内声明的变量有没有被使用,如果没有继续被使用,将会标记,浏览器每隔一段时间会清空掉带有标记的变量。
所以说闭包能使用函数内变量,是因为该变量没有被标记,或正在被引用。

一段简单闭包代码,如果不想继续操作函数内的变量了。。记得清空b,b=undefined

原文地址:https://www.cnblogs.com/sxldy/p/10934590.html