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()     {         ...
  • liuqiao1123
  • liuqiao1123
  • 2016年05月03日 14:03
  • 157

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

先上段代码: //函数a function a() {     var i=0;     //函数b     function b()     {         ...
  • maikelsong
  • maikelsong
  • 2016年06月27日 11:38
  • 255

js跨域问题浅析及解决方法优缺点对比

所谓js跨域问题,是指在一个域下的页面中通过js访问另一个不同域下 的数据对象,出于安全性考 虑,几乎所有浏览器都不允许这种跨域访问,这就导致在一些ajax应用中,使用跨域的web service会成...
  • guoshenglong11
  • guoshenglong11
  • 2016年07月19日 09:55
  • 956

JS学习十七天----工厂方法模式

工厂方法模式 前言 今天自己看了一下自己写的部分博客,发现写的好丑....开始注意自己的排版!!但是偏亮也不是一朝一夕就完成的,我尽量让它漂亮一点.....每天漂亮一点点     正文 工厂方法模式是...
  • shanyongxu
  • shanyongxu
  • 2015年08月16日 20:18
  • 1640

异步操作的优缺点及其应用场合

我曾经提到异步操作能提高系统的吞吐能力,正确使用异步操作来校正滥用异步的错误做法,那异步究竟有何优点值得我们使用?而又有什么缺点需要我们使用的时候小心呢?诚如老赵所说, 异步并不一定能提高系统性能,甚...
  • itsoftchenfei
  • itsoftchenfei
  • 2013年11月25日 14:38
  • 3489

js的三种继承方式及其优缺点

第一种,prototype的方式://父类 function person(){ this.hair = 'black'; this.eye = 'black'; ...
  • wyyfwm
  • wyyfwm
  • 2015年06月03日 17:41
  • 13544

es6 javascript的 class 类的基本语法

1 概述 JavaScript 语言的传统方法是通过构造函数, 定义并生成新对象。 下面是一个例子。 function Point(x, y) { this.x = x; this.y =...
  • qq_30100043
  • qq_30100043
  • 2016年12月09日 10:28
  • 1393

关于NoSQL数据库的分类以及优缺点!

传统的关系系数据库已经无法应对数据日益庞大的企业,特别是互联网快速发展行业,因此现在企业IT架构中首先考虑使用NoSQL数据库。那什么是NoSQL数据库呢?今天大圣众包(www.dashengzb.c...
  • dashenghuahua
  • dashenghuahua
  • 2016年12月06日 15:24
  • 626

javascript 闭包的好处及坏处

闭包javascript 是最强大的特征之一,它允许函数访问局部作用域之外的函数。...
  • vuturn
  • vuturn
  • 2015年01月23日 14:15
  • 10682

各种排序算法的优缺点

1.插入排序 基本思想:     将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个...
  • u010817474
  • u010817474
  • 2015年09月14日 09:45
  • 4237
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript js闭包所用的场合以及优缺点
举报原因:
原因补充:

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