美文网首页js
2018-07-17——了解一下JS闭包

2018-07-17——了解一下JS闭包

作者: zoneccc | 来源:发表于2018-07-17 16:15 被阅读125次

       今天心情还可以,回顾一下JS的闭包知识。掌握闭包,我个人觉得弄清楚以下几个问题就差不多了:

  • 什么是闭包?
  • 什么是JS闭包?
  • JS闭包的适用场景有哪些?
  • 有什么缺陷?
闭包的概念

       从字面意思来理解就是封闭和包裹,换句话说,就是在函数内部定义的变量,在函数的外部无法访问到,因此就说函数构成了一个闭包。说白了闭包是作用域的应用。
       计算机科学中对闭包的定义为:一个函数的函数体以及函数所处的环境,构成的一个综合体叫做闭包,函数体就是函数内部的代码,函数所处的环境指的就是作用域。

JS闭包

       引用MDN上的解释:闭包是一种特殊的对象。它由两部分构成:函数,以及创建该函数的环境。环境由闭包创建时在作用域中的任何局部变量组成。
       听起来云里雾里吧,网上找了好多资料,每个人对闭包的定义也不一样,搞得我也不知道怎么去定义闭包了,所以干脆不去定义了,意会吧。
       我觉得创建闭包最常见方式,就是在一个函数内部创建另一个函数。下面例子中的 closure 就是一个闭包:

function func(){
  var a = 1,b = 2;
  
  function closure(){
    return a+b;
  }
  return closure;
}

       闭包的作用域链包含着它自己的作用域,以及包含它的函数的作用域和全局作用域

JS闭包的适用场景

       以下3点是闭包最基本的应用场景,很多经典案例都源于此:

  • 1.保护函数内的变量安全
  • 2.在内存中维持一个变量
  • 3.通过保护变量的安全实现JS私有属性和私有方法(不能被外部访问)

实际场景:

闭包带来的缺陷!

       技术跟人一样,总有长处和短处,在做到扬长避短之前,就要做到知己知彼,百战不殆!

  • 闭包的缺点就是常驻内存会增大内存使用量,并且使用不当很容易造成内存泄露。
  • 如果不是因为某些特殊任务而需要闭包,在没有必要的情况下,在其它函数中创建函数是不明智的,因为闭包对脚本性能具有负面影响,包括处理速度和内存消耗。

相关文章

  • 2018-07-17——了解一下JS闭包

    今天心情还可以,回顾一下JS的闭包知识。掌握闭包,我个人觉得弄清楚以下几个问题就差不多了: 什么是闭包? 什么是J...

  • js之闭包函数(蔡哲永)

    很多初学js的可能对于js中的闭包函数有一定的模糊认识,下面我们来看一下闭包函数究竟是何方神圣! 想要了解闭包函数...

  • JS闭包问题(二)

    在之前的JS闭包问题(一)文章中大概介绍了一下JS闭包,同时讲了闭包与变量之间的问题,今天我们继续聊闭包,聊聊闭包...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • JS闭包

    JS闭包 闭包练习

  • Javascript 闭包

    如果要了解闭包,我们需要先了解闭包的由来,闭包的产生,源于JS的词法作用域 词法作用域 作用域是指一个 变量能够访...

  • 一分钟理解js闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • 一分钟带你弄懂闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • 什么是闭包?几分钟告诉你

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • 一分钟带你弄懂闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

网友评论

    本文标题:2018-07-17——了解一下JS闭包

    本文链接:https://www.haomeiwen.com/subject/okfgpftx.html