从零开始的全栈工程师——js篇(闭包)
2024-09-03 17:01:56
闭包是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、不必纠结到底怎样才算闭包,其实你写的每一个函数都算作闭包,即使是全局函数,你访问函数外部的全局变量时,就是闭包
的体现。
案例:利用闭包实现点赞效果
- ->
最新文章
- 无限分页//////////////zz
- python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)
- Kafka简要图解
- c++ const char *c_str(); 坑的学习
- vs2012 设计器 视图异常
- CLR执行模型 流程总结(图)
- 前端面试题整理(html)
- MFC中修改默认启动对话框方法
- C#资源管理器
- 9.12 翻译系列:数据注解特性之ConcurrencyCheck【EF 6 Code-First系列】
- Scala对class/object反射
- 关联本地文件夹到 GitLab 项目
- LeetCode 9. Palindrome Number(回文数)
- 微信公众号与APP微信第三方登录账号打通
- 查询sql执行速度
- 七、springcloud之配置中心Config(二)之高可用集群
- Portability Flaw Locale Dependent Comparison
- graphql-yoga interface &;&; union 使用
- [转帖]localhost与127.0.0.1的区别
- Android NDK 交叉编译C++代码生成.so共享库详细步骤
热门文章
- jzoj4915. 【GDOI2017模拟12.9】最长不下降子序列 (数列)
- cenos云服务器搭建虚拟主机
- P1979 华容道
- 在使用jquery时,(e.target).closest("li")是什么意思
- springcloud系列六 整合security
- Eclipse使用Ctrl+C和Ctrl+V复制粘贴时总是卡顿
- Codeforces Round #334(div.2)(新增不用二分代码) B
- jquery深入学习
- web服务器Nginx环境下如何实现安全证书https的配置
- 小白零基础C#学习笔记