匿名函数与闭包的区别

转载 2017年01月03日 11:43:53

匿名函数:没有函数名称的函数;

这就是匿名函数:

function(argument1,argument2){

}

闭包:一个可以使用另外一个函数作用域中的变量的函数。

如下面的代码函数b就是闭包,但是这个前提是:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个我们通常所谓的“闭包”。

意思是说b要变成闭包的话,就必须被外包所引用,即c引用:

复制代码
<script type="text/javascript">
function a(){
   var i=1;
   function b(){
       ++i;
      return i;
   }
  return b;
}
var c=a();
alert(c());
</script>
复制代码

用一个专业一点的说法就是:函数调用返回后一个没有释放资源的栈区;

一般,当函数执行完毕后,局部活动对象会被销毁,内存中仅保存全局作用域,但闭包的情况是不一样的。闭包的活动对象依然会保存在内存中,于是像上例中,函数调用返回后,变量i是属于活动对象里面的,就是说其栈区还没有释放,但你调用c()的时候i变量保存的作用域链从b()->a()->全局去寻找作用域var i声明所在,然后找到了var i=1;然后在闭包内++i;结果,最后输出的值就是2了;不知道这么说有没人明白,如果不明白,那么只要记住它的闭包的两个点就好了,一点就是闭包的活动对象没有被销毁;第二点是作用域链的关键是他要遇到var 声明;就好了····

共同点:他们都有是函数;除此之外没有任何共同点;

下面是,阮一峰http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html?20120612141317#comments对闭包的解析;

闭包会携带它的函数的作用域,因此会比其他函数占用更多的内存,所以使用闭包要非常注意!!!

浅析匿名函数、lambda表达式、闭包(closure)区别与作用

浅析匿名函数、lambda表达式、闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11、python和java中有lambda表达式、lua和JavaScript...
  • guyue35
  • guyue35
  • 2016年07月18日 17:38
  • 621

匿名函数与闭包的区别

匿名函数与闭包的区别 匿名函数:没有函数名称的函数; 这就是匿名函数:function(argument1,argument2){ } 闭包:一个可以使用另外一个函数作用域中的变量的函数。 如下...

JS闭包的运用及匿名函数的作用

1:闭包的目的 闭包的目的就是为了变量私有制,如果学过其他语言可以联想到protected  这个关键词,就是防止其他对象去访问私有的属性或成员方法/函数 2:闭包的问题根源 有时候,我们希望有一...

JavaScript匿名函数与闭包

匿名函数与闭包的相关知识点

Scala 的 "匿名函数"与 "闭包"!

有这样一个函数, 它接受一个函数(或者说闭包)作为参数: object Timer{   def oncePerSecond(callback: () => unit): unit = { ...
  • wisgood
  • wisgood
  • 2016年05月16日 10:53
  • 635

关于flex匿名函数和swift闭包

1.函数可以作为一个变量被定义: var add:Function = function(a:int,b:int):Number { return a + b; }  var menius:Func...

一个简单效果用到的js特性(异步编程,匿名函数,闭包)

效果:轮询显示隐藏所有p标签,显示用打印机效果一个字符一个字符地显示,淡出隐藏准备知识 js异步编程(setInterval setTimeout) JS 本身是单线程运行的,不可能在一段代码还未...

JavaScript关于闭包,匿名函数,this,对象等的一些理解

闭包原本就是指所有的函数,但我们一般是指能够读取其他函数内部变量的函数,主要有两个作用:一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。当函数a的内部函数b被函数a外的一个变量...

php中的匿名函数和闭包(closure)

一:匿名函数 (在php5.3.0 或以上才能使用)      php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数。最常用...

Js的匿名函数与闭包特性

下面,我们先初步了解一下和匿名函数相关的概念。 ############################################# 匿名函数 #####################...
  • liuzx32
  • liuzx32
  • 2012年07月21日 11:39
  • 657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:匿名函数与闭包的区别
举报原因:
原因补充:

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