位置: 编程技术 - 正文

理解javascript闭包(js闭包的定义和用途)

编辑:rootadmin

推荐整理分享理解javascript闭包(js闭包的定义和用途),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript闭包概念,js怎么理解,js闭包是什么,有什么好处,javascript闭包运行原理,js闭包是什么,有什么好处,js怎么理解,js怎么理解,javascript闭包运行原理,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是javascript闭包?javascript允许使用内部函数,内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。简单的javascript闭包例子:

在这段代码中,result实际上就是闭包f2函数。它一共运行了两次,第一次的值是,第二次的值是。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。为什么会这样呢?原因就在于f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage collection)回收。这段代码中另一个值得注意的地方,就是"nAdd=function(){n+=1}"这一行,首先在nAdd前面没有使用var关键字,因此nAdd是一个全局变量,而不是局部变量。其次,nAdd的值是一个匿名函数(anonymous function),而这个匿名函数本身也是一个闭包,所以nAdd相当于是一个setter,可以在函数外部对函数内部的局部变量进行操作。 闭包的应用:

理解javascript闭包(js闭包的定义和用途)

这个单件通过闭包来实现。通过闭包完成了私有的成员和方法的封装。匿名主函数返回一个对象。对象包含了两个方法,方法1可以方法私有变量,方法2访问内部私有函数。需要注意的地方是匿名主函数结束的地方的'()',如果没有这个'()'就不能产生单件。因为匿名函数只能返回了唯一的对象,而且不能被其他地方调用。这个就是利用闭包产生单件的方法。

闭包的优势:(1)不增加额外的全局变量,(2)执行过程中所有变量都是在匿名函数内部。闭包的缺点:(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

本文就为大家介绍这里,如果大家对javascript闭包还是不够了解,请阅读相关文章进行补充学习,谢谢大家的阅读。

js简单网速测试方法完整实例 本文实例讲述了js简单网速测试方法。分享给大家供大家参考,具体如下:运行效果截图如下:具体代码如下:!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.Transitional//EN

JavaScript获取当前cpu使用率的方法 本文实例讲述了JavaScript获取当前cpu使用率的方法。分享给大家供大家参考,具体如下:想获取当前系统cpu的使用率,如果允许使用hta,可以使用以下的

JavaScript为事件句柄绑定监听函数实例详解 本文实例讲述了JavaScript为事件句柄绑定监听函数的方法。分享给大家供大家参考,具体如下:在JavaScript中为Dom元素绑定事件监听函数是一件非常常见的

标签: js闭包的定义和用途

本文链接地址:https://www.jiuchutong.com/biancheng/387133.html 转载请保留说明!

上一篇:js实现根据身份证号自动生成出生日期(javascript身份证号验证)

下一篇:js简单网速测试方法完整实例(js简单网速测试方法)

  • 递延所得税负债怎么算
  • 发票冲红重开,重开时是按新税率还是旧税率
  • 税控盘抵扣可以跨年吗
  • 可供出售金融资产和长期股权投资
  • 增值税一般纳税人税率
  • 工资以现金形式发放的情况说明
  • 食品销售税务起征点是多少
  • 增值税专用发票几个点
  • 房地产企业固定资产的折旧
  • 交车辆购置税需要开车去吗
  • 在登记账簿时,应在记账凭证上注明所记账簿的页数
  • 销货清单怎么写才正规
  • 以前年度做的预算怎么查
  • 收到社会保险基金管理局转来的失业保险金,社保代发
  • 公司报销员工的首饰可以税前列支吗
  • 一般纳税人开劳务费税率是多少2023
  • 往来科目明细表
  • 创业带动的就业是什么
  • 利润表中利润归还投资
  • 缴纳的教育费附加可以税前扣除吗
  • 财政给企业的补助资金企业是否需要开发票
  • 小规模纳税人增值税申报表怎么填
  • 库存商品出口退税的账务处理?
  • 收到投资的会计科目
  • 工资中的公积金怎么算法
  • 任务栏图标重叠一起
  • 怎么重装电脑xp
  • php预定义常量要使用define函数进行定义
  • 不征税收入如何记账
  • 销售固定资产税目
  • 转让应收账款会计分录
  • 发票开具的法定义务是什么
  • yii2 adminlte
  • 未取得合法凭证税前扣除
  • 编制合并财务报表的程序主要包括
  • 泛微oa二次开发难吗
  • 保姆级官方yolov7的训练自己的数据集以及项目部署
  • HTML常用标记
  • python函数的默认值
  • 如何区分误餐费和补助费
  • 出入库单可以用机打的吗
  • php网站首页的源码在哪里
  • zabbix 网络监控
  • 安装配置mysql,检验是否正常安装
  • 生育津贴减去应发工资还是实发工资
  • 浅谈一下新冠的好处
  • mssql备份数据库
  • 水利基金差额征收有哪些类型
  • 企业返聘退休人员需要交社保吗
  • 小规模纳税人分红要交税吗
  • sqlldr并发
  • 员工奖励账务处理流程
  • 退休人员基本养老金计发表
  • 定期存款账务怎么处理
  • 结转固定资产清理科目
  • 出纳 记账凭证
  • 投资性房地产按成本法计提折旧
  • 预收账款和应收账款可以放在一个账户
  • Windows Server 2008之数据安全保护
  • mac 休眠
  • jinjia.exe进程
  • linux的sbin
  • win1021年更新
  • linux extern关键字
  • win降win7
  • 全面理解全面把握全面落实
  • javascript基础教程教材答案
  • js date()
  • python使用mysql数据库示例代码
  • js兼容ie
  • shell脚本实现同时多台远程主机执行命令的代码分享
  • 批处理常用命令及用法大全
  • xcopy /s /e
  • webpack vue-loader
  • python import os
  • js判断浏览器内核和版本
  • 如何用python写自动化脚本
  • js混杂模式
  • 税款复核需要多少天
  • 企业代收行政事业性收费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设