闭包是js中的一大特色,也是一大难点。简单来说,所谓闭包就是说,一个函数能够访问其函数外部作用域中的变量。

闭包的三大特点为:

1、函数嵌套函数

2、内部函数可以访问外部函数的变量

3、参数和变量不会被回收。

闭包散知识点:

一、变量销毁

1.人为销毁:var a = 12; a = null;
2.自然销毁:函数调用完成之后浏览器会自动销毁函数内的变量

二、闭包的种类

1.函数式

2.对象式

举例来说

function test(){
  var a = 123;
  return function () {
    alert(a);
  }
}
var try=test();
try();//弹出a的值

这个例子中,变量a在test方法外部是无法访问的,但test方法里面,嵌套了一个匿名函数,通过return返回,test作用域中的变量a,

可以在匿名函数中访问。并且当test方法执行后,变量a所占内存并不会释放,以达到嵌套的函数还可以访问的目的。

总结:
1、闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,

通过另一个函数访问这个函数的局部变量。闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

2、不必纠结到底怎样才算闭包,其实你写的每一个函数都算作闭包,即使是全局函数,你访问函数外部的全局变量时,就是闭包
的体现。

案例:利用闭包实现点赞效果

        - ->  

最新文章

  1. 无限分页//////////////zz
  2. python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)
  3. Kafka简要图解
  4. c++ const char *c_str(); 坑的学习
  5. vs2012 设计器 视图异常
  6. CLR执行模型 流程总结(图)
  7. 前端面试题整理(html)
  8. MFC中修改默认启动对话框方法
  9. C#资源管理器
  10. 9.12 翻译系列:数据注解特性之ConcurrencyCheck【EF 6 Code-First系列】
  11. Scala对class/object反射
  12. 关联本地文件夹到 GitLab 项目
  13. LeetCode 9. Palindrome Number(回文数)
  14. 微信公众号与APP微信第三方登录账号打通
  15. 查询sql执行速度
  16. 七、springcloud之配置中心Config(二)之高可用集群
  17. Portability Flaw Locale Dependent Comparison
  18. graphql-yoga interface && union 使用
  19. [转帖]localhost与127.0.0.1的区别
  20. Android NDK 交叉编译C++代码生成.so共享库详细步骤

热门文章

  1. jzoj4915. 【GDOI2017模拟12.9】最长不下降子序列 (数列)
  2. cenos云服务器搭建虚拟主机
  3. P1979 华容道
  4. 在使用jquery时,(e.target).closest("li")是什么意思
  5. springcloud系列六 整合security
  6. Eclipse使用Ctrl+C和Ctrl+V复制粘贴时总是卡顿
  7. Codeforces Round #334(div.2)(新增不用二分代码) B
  8. jquery深入学习
  9. web服务器Nginx环境下如何实现安全证书https的配置
  10. 小白零基础C#学习笔记