Js的闭包会有哪些作用?
原创简单地说,闭包是函数返回的内部函数,内部函数保存当前词法范围的外部函数的变量或状态,允许我们通过返回的内部功能在词法环境之外自由地操作外部函数的私有变量。
在javascript关闭主要解决两件事:
1.读取和操作外部函数的私有变量。
2.外部函数的私有变量不会被清除,并且始终在内存中。
让我们来看看栗子的用途:
const foo = (function() {
let a = 1;
return {
getA: function() {
return a;
},
setA: function(val) {
a = val;
}
};
})();
console.log(foo.getA()); // 1
foo.setA(123);
console.log(foo.getA()); // 123
我们使用一个自动执行的匿名函数,原则上无法从外部获取内部信息。a变量,但我们传递返回。getA和setA它可以操作。
内容来源:
作者:陈先仁
链接:https://www.zhihu.com/question/373459049/answer/1031946055
来源:知乎
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
相关文章
- 解决SolidWorks2019许可证错误-85440
- 解决sklearn.datasets.fetch_20newsgroups下载速度慢的问题
- 解决sklearn.datasets.fetch_20newsgroups下载报错问题分享
- 解决Scratch3.0scratch-hex文件下载失败问题
- 解决RHEL7无法使用YUM源的问题
- 解决Qt应用中遇到的libpngwarningiCCPknownincorrectsRGBprofile问题
- 解决QT启动时找不到python36.dll问题
- 解决Qt5在麒麟Linux下不能输入中文问题
- 解决QT5.12.6使用32位MinGW编译器无法使用SSL协议问题
- 解决PyTorchCUDA编译问题指南
作者文章
- 解决SolidWorks2019许可证错误-85440 3个月前 (02-11)
- 解决sklearn.datasets.fetch_20newsgroups下载速度慢的问题 3个月前 (02-11)
- 解决sklearn.datasets.fetch_20newsgroups下载报错问题分享 3个月前 (02-11)
- 解决Scratch3.0scratch-hex文件下载失败问题 3个月前 (02-11)
- 解决RHEL7无法使用YUM源的问题 3个月前 (02-11)
热门
- 1 PHP导出csv文件 在PHP代码中想要将数据导出到浏览器,如下:持续下载 利用 php://output 输出流,以及 fputcsv 函数, yield 语法糖 public function export() { $regions = Regio...
- 2 Linux之使用Java空间 下载地址: Java Archive Downloads - Java SE 8u211 and later https://www.oracle.com/java/technologies/javase/javase8u211-late...
- 3 PHP生成器的操作yield功能优化 什么是生成器? 听着高大上的名字,感觉像是创造什么东西的一个功能,实际上,生成器是一个用于迭代的迭代器。它提供了一种更容易的方式来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。 说了半天不如直接看...
- 4 一文看懂字符和字节的意思 前言 我们在数据库建表时,经常会困扰某个字段应该选择什么数据类型,以及填写什么长度。选择数据类型方面一般没什么大问题,但是在填写对应的长度的时候,很多人就会困扰,对应长度填写的数字到底是什么含义,以及会影响到哪些东西。笔者在翻阅网上的相关文...
- 5 css三角形原创 &::after { content: ‘’; position: absolute; width: 0; height: 0; border-top: 30rpx solid #fff; border-left: 30rpx so...
- 6 PHP使用redis实现分布式锁 话不多说直接上代码 $redisLock = Redis::lock(key, value, 5);//key使用商品id,value使用用户id拼接时间戳和随机字符 try { //获取锁:适用于n个人抢1个商品的场景,避免出现多...
- 7 SQLserverDate对象 前言: 在SQL server在中,当我们以日期和时间格式处理数据时,需要确保数据的格式与数据库中要求的格式一致,否则很容易看到数据无法插入到数据库中。或者在查询数据时存在显示不完整的问题。 我们可以通过数据库内置的日期处理程序来解决数据格...
- 8 JAVA内存泄漏详解(范例及解决办法)版权声明 尝试了通过一张图片转载,效果还可以,就是原博主的代码格式太酷炫,亮瞎了哈。?...
- 9 JavaScript编程实现防抖和排气 一、什么是防抖和节流 Ps : 比如搜索框,用户在输入的时候使用 change 事件去调用搜索,如果用户每一次输入都去搜索的话,那得消耗多大的服务器资源,即使你的服务器资源很强大,也不带这么玩的。 防抖 - debounce 其中一...
- 10 php前后端通过json数据传值转载 前端密钥代码密钥前端代码前端密钥代码(需要下载jquery-3.3.1): <script src="js/jquery-3.3.1.min.js" type="text/javascript"...
最新文章
- 解决SolidWorks2019许可证错误-85440 3个月前 (02-11)
- 解决sklearn.datasets.fetch_20newsgroups下载速度慢的问题 3个月前 (02-11)
- 解决sklearn.datasets.fetch_20newsgroups下载报错问题分享 3个月前 (02-11)
- 解决Scratch3.0scratch-hex文件下载失败问题 3个月前 (02-11)
- 解决RHEL7无法使用YUM源的问题 3个月前 (02-11)
- 解决Qt应用中遇到的libpngwarningiCCPknownincorrectsRGBprofile问题 3个月前 (02-11)
- 解决QT启动时找不到python36.dll问题 3个月前 (02-11)
- 解决Qt5在麒麟Linux下不能输入中文问题 3个月前 (02-11)
- 解决QT5.12.6使用32位MinGW编译器无法使用SSL协议问题 3个月前 (02-11)
- 解决PyTorchCUDA编译问题指南 3个月前 (02-11)