JavaScript中的匿名函数和闭包是什么?

之前在学编译原理的时候接触过闭包这个概念,就是一组数据中所有数据的任意组合为闭包,然而突然看到与匿名函数放在一起了,感觉应该不是那个意思,所以就了解了一下。

匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。

匿名函数

  • 一般函数的创建:
function a(){
     return  1;
}
  • 匿名函数的创建:
    匿名函数有两中创建方式,第一种就是将它赋值给一个变量:
var b = function(){
     return  1;
}

第二种可以用自执行的方法:

(function(){
     return  1;
})()

匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),并且还可以构建命名空间,以减少全局变量的使用。

闭包

创建闭包的常见的方式,就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。

 function a(){
        var name='hello world';
          return function (){     //通过匿名函数返回a()局部变量 
              return name; 
          }
}
  • 使用闭包的好处:
    1 . 使用闭包可以把局部变量驻留在内存中,可以避免使用全局变量。
    2 . 加强封装性,可以达到对变量的保护作用。
  • 使用闭包的缺点:
    1 . 由于闭包内部变量优先级高于外部变量,所以多查找作用域链中的一个层次,就会在一定程度上影响查找速度。
    2 . 由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更多的内存。
    过度使用闭包会导致性能下降,所以还是慎用吧。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容