什么是——JS闭包

Posted David凉宸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是——JS闭包相关的知识,希望对你有一定的参考价值。

  • 什么是闭包?
    「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包
    闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成 “定义在一个函数内部的函”
  • JS中闭包的优缺点及特性
    优点:
    1.保护函数内的变量安全
    2.在内存中维持一个变量(用的太多就变成了缺点,占内存)
    3.逻辑连续,当闭包作为另一个函数调用的参数时,避免你脱离当前逻辑而单独编写额外逻辑
    4.方便调用上下文的局部变量
    5.加强封装性,可以达到对变量的保护作用
    缺点:
    1.常驻内存,会增大内存使用量,使用不当很容易造成内存泄露
    2.还有有一个非常严重的问题,那就是内存浪费问题,这个内存浪费不仅仅因为它常驻内存,更重要的是,对闭包的使用不当会造成无效内存的产生
    特性:
    1.函数嵌套函数
    2.内部函数可以访问外部函数的变量
    3.参数和变量不会被回收
function a () {
   var num = 0;
   function b () {
      alert (num++);
   }
  return b;
}
var c = a();
c(); 

以上是关于什么是——JS闭包的主要内容,如果未能解决你的问题,请参考以下文章

js中的闭包

Spark闭包与序列化

JS基础---到底什么是闭包?它是如何形成的?

什么是作用域, 什么事闭包, 什么事原型链

js 闭包

js 之 闭包