闭包

闭包的定义:闭包在一个函数中可以访问另一个函数的作用域
闭包的特点:1 函数嵌套函数 2 内部的函数可以引用外部的函数的变量和参数 参数不会被垃圾回收机制回收
垃圾回收机制:找出不再使用的变量 然后释放掉其占用的内存 但是这个内存不是实时的 是按照固定的时间间隔周期性执行
闭包:简单来说函数的嵌套形成了闭包
闭包 包括函数本身以及他的外部作用域 函数a嵌套类函数b 且返回b 当调用函数a时 用变量接收函数b 就形成了闭包
扩展:作用域和作用域链的问题 js只有全局作用域和函数作用域(也叫局部作用域)没有块级作用域{}
作用域链的查找方式 由内向外查找 函数作用域内的变量 全局不能访问 要想访问就要用闭包
优点:使用闭包可以形成独立的空间 缓存数据 延长变量的生命周期
缺点:延长了作用域链 需要释放的变量不能及时释放可能引发内存泄漏
(扩展:内存泄漏也称"储存渗漏"用动态储存分配函数动态开辟的空间 在使用完毕后未释放 结果导致占用一定的内存单元 直到程序结束(说白了就是该该内存空间使用完毕后未收回) 内存泄漏形象比喻:操作系统可提供所有进程的储存空间正在被某个进成榨干 最终是程序运行时间越长 占用的内存空间越多 最终用尽全部内存空间 导致整个系统崩溃)

posted @ 2017-07-29 22:23  耳东陈-cw  阅读(126)  评论(0)    收藏  举报