JavaScript js闭包所用的场合以及优缺点

转载 2016年06月01日 10:40:44

转载:http://blog.sina.com.cn/s/blog_50197c290101f870.html


先上段代码:

//函数a

function a()

{

    var i=0;
    //函数b
    function b()
    {
        alert(++i);
    }
    return b;
}
    //函数c
    var c = a();
    c();

代码特点:
1、函数b嵌套在函数a内部;
2、函数a返回函数b。
代码中函数a的内部函数b,被函数a外面的一个变量c引用的时候,这就叫创建了一个闭包。有时候函数b也可以用一个匿名函数代替来返回,即return function(){};
优点:1.保护函数内的变量安全,加强了封装性 2.在内存中维持一个变量(用的太多就变成了缺点,占内存)
闭包之所以会占用资源是当函数a执行结束后, 变量i不会因为函数a的结束而销毁, 因为b的执行需要依赖a中的变量。
不适合场景:返回闭包的函数是个非常大的函数

闭包的典型框架应该就是jquery了。
闭包是javascript语言的一大特点,主要应用闭包场合主要是为了:设计私有的方法和变量。
这在做框架的时候体现更明显,有些方法和属性只是运算逻辑过程中的使用的,不想让外部修改这些属性,因此就可以设计一个闭包来只提供方法获取。

闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。


1. 逻辑连续,当闭包作为另一个函数调用的参数时,避免你脱离当前逻辑而单独编写额外逻辑。
2. 方便调用上下文的局部变量。
3. 加强封装性,第2点的延伸,可以达到对变量的保护作用。

缺点:

闭包有一个非常严重的问题,那就是内存浪费问题,这个内存浪费不仅仅因为它常驻内存,更重要的是,对闭包的使用不当会造成无效内存的产生

相关文章推荐

JavaScript js闭包所用的场合以及优缺点

先上段代码: //函数a function a() {     var i=0;     //函数b     function b()     {         ...

JS中闭包的优缺点

先上段代码: //函数a function a() { var i=0; //函数b function b() ...
  • weblini
  • weblini
  • 2016年03月28日 10:32
  • 2580

javascript深入理解js闭包

看了很多关于闭包的资料,觉得这个还不错,转载下,以共勉。 -------------写在前面 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠...

javascript深入理解js闭包

javascript深入理解js闭包 作者: 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量的作用域 ...

JavaScript学习总结二:js闭包(Closure)概念

闭包的两个特点: 1、作为一个函数变量的一个引用,当函数返回时,其处于激活状态。 2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。   概念描述(个人理解仅供参考): 当一个函数嵌...

javascript笔记-----------js闭包

闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量).可以通俗的说:子函数可以使用父函数中的局部变量,这种...
  • BCance
  • BCance
  • 2014年05月05日 22:06
  • 307

【JavaScript】3.JS中的闭包之我理解

闭包是一个比较抽象的概念,尤其对js新手来说,书上的解释实在是晦涩,对我来说也是一样,但是它也是js提升中无法绕过的一环,几乎每次面试必问的问题,因为在回答的时候,你的答案的深度,对术语的理解以及js...

[js点滴]javaScript闭包引起的问题及分析

1、什么是闭包、以及闭包所涉及的作用域链这里就不说了。2、JavaScript垃圾回收机制JavaScript不需要手动地释放内存,它使用一种自动垃圾回收机制(garbage collection)。...

JS学习笔记:JavaScript匿名函数与闭包(closure)

这部分之所以会放在一起整理,是因为匿名函数和闭包的概念很容易混淆,经常会用错。闭包是JavaScript的一个难点,也是它的一个特色,很多高级应用都要通过闭包实现,正确的理解和使用闭包是很重要的。闭包...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript js闭包所用的场合以及优缺点
举报原因:
原因补充:

(最多只允许输入30个字)