当前位置:网站首页>41.js--闭包
41.js--闭包
2022-07-13 17:35:00 【爱喝珍珠奶茶】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.什么是闭包?(面试题)
闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。
官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
具有作用域的代码块就是闭包
2.闭包的特点
1.作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
2.一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
优点:可以访问局部变量。
缺点:局部变量一直占用内存,内存占用严重,还容易造成内存泄漏(内存被占用,剩余的内存变少,程序加载、处理速度变慢)。
5
3.闭包这个技术的好处是什么?
通过业务点对闭包做区分
(1) 闭包1.函数内部的变量外部是无法访问的 但是可以通过返回一个闭包 外部操作闭包来间接访问函数内部的变量,闭包可以决定这个变量的操作方式 (利用了函数的作用域和运行时作用域)
function alipay() { money=1000 } alipay() console.log(money)运行结果:
![]()
(2) 闭包2.利用了函数每次调用时生成的独立调用栈,利用函数的形参保存临时变量的值
运行结果:
![]()
(1)闭包1. 一个函数返回函数内部的工具函数,外部通过工具函数间接访问函数局部变量的过程
(2)闭包2. 利用函数自调用,每次调用内部的局部变量或者形参都是独立的 来保存一些临时数据
(3)闭包3.利用函数的独立作用域 来生成业务代码块 内部的变量相互不冲突污染全局变量
(function (){ var a="张三" var b=52 function fn () { b=b+1 } fn() function look () { console.log(b) } look() fn() fn() console.log(a) look() function look3 () { console.log(a) } look3() })();运行结果:
(4)闭包4. 回调函数 利用函数复用的功能,制作复用工具,参数返回值
function fn (arg1) { var data="hello" arg1(data) } fn(function(a){ console.log(a,123) })运行结果:
边栏推荐
- Summary of wechat red envelope project test
- Résoudre le problème de l'échec de l'écho en temps opportun après le téléchargement de l'image du projet SSM
- 藍橋杯單片機第13届省賽題
- keil报错: ERROR 118 (ERRONEOUS REFERENCE TO EXTERNAL VARIABLES) 解决方案及原因
- 迷茫的我要开始奔【测试】这个方向啦
- 数据类型与约束
- 基于 conda 的在 Win10 上从零开始搞一个 Tensorflow-gpu (2.6.0) 环境的操作记录 (2022.07)
- 2022 gopherchina's producers and speech content have been announced···
- Mysql 实战45讲
- Dark blue themed boss, can you add a typewriter function so that you can choose when typing
猜你喜欢

数组变化,但是无法更新视图(原因和思考)
![[tensorflow2] implementation of gradient inversion layer (GRL) and domain antagonism training neural network (Dann)](/img/c4/1e1d68a69cb41da8ebb6463a35ca82.png)
[tensorflow2] implementation of gradient inversion layer (GRL) and domain antagonism training neural network (Dann)

The 13th provincial competition of Bluebridge cup single chip microcomputer

油猴脚本更改tw样式

What if the system always breaks down? Maybe you should learn stability construction!

鸟哥谈云原生安全最佳实践 | 文末赠书

命令行客户端的使用

(CVPR-2022)用于改进步态识别的拉格朗日运动分析和视角嵌入

路特软件戚俊:云原生助力SaaS类业务租户高效隔离
![[explore why string class is an immutable type: String class imitation]](/img/31/421f7762348ec178d649c80e962089.png)
[explore why string class is an immutable type: String class imitation]
随机推荐
美团基于 Flink 的实时数仓平台建设新进展
Range installation and attacker configuration for penetration testing
分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择
yandex bot user agent
ES6--箭头函数
Is the sub database and sub table really suitable for your system? Talk about how to select sub databases, sub tables and newsql
油猴脚本更改tw樣式
Changement de style TW du script singe huileux
学长讲解 - FPGA与单片机的区别 【毕设基础概念】
基于 conda 的在 Win10 上从零开始搞一个 Tensorflow-gpu (2.6.0) 环境的操作记录 (2022.07)
数据类型与约束
C语言:通过结构体实现通讯录的简易功能
2022 gopherchina's producers and speech content have been announced···
Résoudre le problème de l'échec de l'écho en temps opportun après le téléchargement de l'image du projet SSM
PV操作程序题
油猴脚本更改tw样式
自适应批作业调度器:为 Flink 批作业自动推导并行度
Dark-blue 主题的大佬,可否加入一个打字机的功能,让打字的时候可以进行选择
Class notes (3) example (2) -567 Beanfeast
Lu te software Qi Jun: cloud native helps SaaS business tenants to isolate efficiently


