「面试题」2、谈一谈闭包

108 阅读1分钟

概念

  • 闭包就是能读取其他函数内部变量的函数。
  • 闭包指的就是有权访问令一个函数作用域中变量或者方法的函数。
  • 创建闭包的最常见的方式在a函数中创建b函数。通过b函数访问a函数内部的变量或者方法,将b函数返回出去,就可以突破作用域,让外部也可以访问a函数内部的变量或者方法。

特性

  • 函数内再嵌套函数
  • 内部函数可以引用外层的参数和变量
  • 参数和变量不会被垃圾回收机制回收

目的

使用闭包的目的主要是为了设计私有变量和方法。

闭包的优劣

  • 好处:可以避免全局变量的污染,能够实现封装和缓存等
  • 坏处:闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露

注意点

  • 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露
  • 解决方法是,在退出函数之前,将不使用的局部变量全部删除