首页 > Web开发 > 详细

JS - 闭包学习

时间:2017-06-21 12:55:06      阅读:216      评论:0      收藏:0      [点我收藏+]

       刚学习了闭包,主要是从廖雪峰的官方网站和阮一峰的网络日志中学的。总结如下:

   JS的闭包,就是一个函数A里面有一个内嵌的函数B,A 返回的是B 。B可以访问A的参数和局部变量,当A返回B时,A的参数和局部变量就保存在B中,这就是闭包。B在返回时并没有立刻执行,z直到调用时候B()才执行。

  在A里定义局部变量,一定要用到var 来定义,否则该变量就默认为全局变量了。

闭包的用途

      闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

     (摘自阮一峰的网络日志)

      在面向对象的程序设计语言里,比如Java和C++,要在对象内部封装一个私有变量,可以用private修饰一个成员变量。

      在没有class机制,只有函数的语言里,借助闭包,同样可以封装一个私有变量,从外部读取局部变量

    (摘自廖雪峰的官方网站)

使用闭包的注意点

  1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

  2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

  (摘自阮一峰的网络日志)

  3)返回闭包B时牢记的一点就是:闭包B不要引用任何循环变量,或者后续会发生变化的变量。如果一定要引用循环变量怎么办?方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变。(摘自廖雪峰的官方网站)

 

JS - 闭包学习

原文:http://www.cnblogs.com/caifang-blog/p/7058793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!