美文网首页
JavaScript中的匿名函数和闭包是什么?

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

作者: 小m_up | 来源:发表于2017-01-18 10:04 被阅读60次

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

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

匿名函数

  • 一般函数的创建:
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 . 由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更多的内存。
    过度使用闭包会导致性能下降,所以还是慎用吧。

相关文章

  • PHP新特性之闭包、匿名函数

    闭包 闭包是什么? 1).闭包和匿名函数在PHP5.3中被引入。2).闭包是指在创建时封装函数周围状态的函数,即使...

  • 闭包和高阶函数(节流、分时、惰性加载)

    javaScript设计模式中,许多模式都可以用闭包和高阶函数来实现 闭包 一般理解闭包就是返回一个匿名函数,可以...

  • 后端程序员的 JavaScript 之旅 - 模块化(一)

    基础模式 匿名闭包 匿名闭包是很常用的代码隔离方式,声明匿名对象并立即执行。匿名函数中声明的变量和方法以及匿名函数...

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

    之前在学编译原理的时候接触过闭包这个概念,就是一组数据中所有数据的任意组合为闭包,然而突然看到与匿名函数放在一起了...

  • js闭包是什么?

    一、闭包是什么?   闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数...

  • 闭包的理解

    什么是闭包,闭包的用途是什么? 闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部...

  • 闭包关系

    一、闭包是什么? 闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部...

  • Swift学习-闭包&& 懒加载&&am

    闭包 闭包的介绍 闭包和OC中的block非常相似OC中的block是匿名的函数Swift中的闭包是一个特殊的函数...

  • 深入理解JavaScript中的闭包

    闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的...

  • PHP技巧篇之闭包(匿名函数)

    你可能听说过闭包二字,也听说过匿名函数,可是它们究竟是什么高大上的东西呢?闭包和匿名函数在PHP5.3.0中引入的...

网友评论

      本文标题:JavaScript中的匿名函数和闭包是什么?

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