javascript 闭包的好处及坏处
闭包javascript 是最强大的特征之一,它允许函数访问局部作用域之外的函数。
创建闭包的常见方式:就是在一个函数里创建另一个函数
function fun(){return function{alert("hello");}}
闭包的好处有:
1.缓存
2.面向对象中的对象
3.实现封装,防止变量跑到外层作用域中,发生命名冲突
4.匿名自执行函数,匿名自执行函数可以减小内存消耗
以上四条详见(http://blog.csdn.net/sunlylorn/article/details/6534610)
闭包的坏处:
1.内存消耗
通常来说,函数的活动对象会随着执行期上下文一起销毁,但是,由于闭包引用另外一个函数的活动对象,因此这个活动对象无法被销毁,这意味着,闭包比一般的函数需要更多的内存消耗。尤其在IE浏览器中需要关注。由于IE使用非原生javascript对象实现DOM对象,因此闭包会导致内存泄露问题,例如:
function A(){var a=document.createElement("div"),//msg="Hello";a.οnclick=function(){alert(msg);}}A();
以上的闭包会在IE下导致内存泄露,假设A()执行时创建的作用域对象ScopeA,ScopeA引用了DOM对象a,DOM对象a
引用了function(aleert(msg)),函数function(alert(msg))引用了ScopeA,这是一个循环引用,在IE会导致内存泄露。
2.性能问题
使用闭包时,会涉及到跨作用域访问,每次访问都会导致性能损失。
因此在脚本中,最好小心使用闭包,它同时会涉及到内存和速度问题。不过我们可以通过把跨作用域变量存储在局部变量中,然后直接访问局部变量,来减轻对执行速度的影响。
(PS:以上参考《高性能JavaScript》)
更详细的闭包讲解:(http://blog.csdn.net/vuturn/article/details/44560717)
javascript 闭包的好处及坏处相关推荐
- JavaScript闭包之经典案例
①函数作为返回值 [1]例子1 function a() {var name='dov';return function(){return name;}}var b=a();console.log(b ...
- 通俗理解JavaScript闭包
文章目录 一.闭包是什么? 因此得出结论:能够读取其他函数内部变量的函数,就是闭包 二.满足闭包的两个个特征 三.经典案例 四.经典面试题 总结闭包的好处与坏处 一.闭包是什么? 闭包是js的一个难点 ...
- Javascript闭包和闭包的几种写法及用途
好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途. 一.什么 ...
- 全面理解Javascript闭包和闭包的几种写法及用途【转】
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- 全面理解Javascript闭包和闭包的几种写法及用途
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- JavaScript闭包如何工作?
您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例 ,但是不幸的是它没有帮助. #1楼 我知道已经有 ...
- 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...
全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一 ...
- JavaScript闭包研究
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了JavaScript闭包的原理.特点并用一些实例做了证 ...
- 从λ演算到函数式编程聊闭包(2):彻底理解JavaScript闭包规则
闭包是很多语言都具备的特性,上篇<从抽象代数漫游函数式编程(1):闭包概念再Java/PHP/JS中的定义> 闭包的特性 闭包有三个特性: 函数嵌套函数 函数内部可以引用外部的参数和变量 ...
最新文章
- 基于的BCH的相关应用是不是该降降温?
- autoconfig oracle,ORACLE EBS 执行autoconfig time out
- 【原创】如何使用Jmockit进行单元测试
- mysql 定时同步数据_MySQL数据同步之otter
- 如何利用DeepFM算法设计推荐系统
- C++网易云课堂开发工程师-拷贝构造,拷贝复制,析构函数
- CVPR2020 Oral|场景去遮挡新方法:港中文首次提出自监督新框架,已开源
- 项目助理这个工作怎么样_影楼化妆师这个工作怎么样?
- .NET 将 .config 文件嵌入到程序集
- Shell命令学习笔记
- 基于OpenCV实现二值图细化,骨骼化并求出端点和交叉点
- 2021-05-15 MySql面试题 通用篇
- 华硕afudos刷bios_华硕M2N-MX SE PLUS主板 如何用afudos命令刷BIOS
- matlab常数模块,simulink怎样输入常数
- WIN10 拨号连接下 如何开启移动热点
- IDEA价格对程序员来说九牛一毛,为啥这么多人用破解版?
- 刷脸支付代理收益盈利模式
- python爬虫篇,零基础学爬虫之精华版
- TP、FP、TN、FN傻傻分不清楚
- 记录虚拟机中更改虚拟网络编辑器无效的解决方法
热门文章
- DeepCTR反复安装各种库numpy,tensorflow
- 使用aggregate函数计算平均数
- 新用户,玩「聊天宝」完整过程(亮点槽点)
- 2022年全国职业院校技能大赛“网络安全”竞赛试题官方答案
- 施工阶段如何应用BIM技术,建模助手有话说
- 编写网页的基本格式(标签)
- 注册URL Scheme步骤以及打开其他App
- 平安WiFi牵手“黑科技“,引领WiFi行业新变革
- 关于String 对象的 intern()方法的使用
- Hexo博客优化:在Next主题中设置进阶版Live2D看板娘————拒绝踩坑!!!!