闭包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 闭包的好处及坏处相关推荐

  1. JavaScript闭包之经典案例

    ①函数作为返回值 [1]例子1 function a() {var name='dov';return function(){return name;}}var b=a();console.log(b ...

  2. 通俗理解JavaScript闭包

    文章目录 一.闭包是什么? 因此得出结论:能够读取其他函数内部变量的函数,就是闭包 二.满足闭包的两个个特征 三.经典案例 四.经典面试题 总结闭包的好处与坏处 一.闭包是什么? 闭包是js的一个难点 ...

  3. Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  4. 全面理解Javascript闭包和闭包的几种写法及用途【转】

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  5. 全面理解Javascript闭包和闭包的几种写法及用途

     一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  6. JavaScript闭包如何工作?

    您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例 ,但是不幸的是它没有帮助. #1楼 我知道已经有 ...

  7. 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...

    全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一 ...

  8. JavaScript闭包研究

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka            摘要:本文主要讲了JavaScript闭包的原理.特点并用一些实例做了证 ...

  9. 从λ演算到函数式编程聊闭包(2):彻底理解JavaScript闭包规则

    闭包是很多语言都具备的特性,上篇<从抽象代数漫游函数式编程(1):闭包概念再Java/PHP/JS中的定义> 闭包的特性 闭包有三个特性: 函数嵌套函数 函数内部可以引用外部的参数和变量 ...

最新文章

  1. 基于的BCH的相关应用是不是该降降温?
  2. autoconfig oracle,ORACLE EBS 执行autoconfig time out
  3. 【原创】如何使用Jmockit进行单元测试
  4. mysql 定时同步数据_MySQL数据同步之otter
  5. 如何利用DeepFM算法设计推荐系统
  6. C++网易云课堂开发工程师-拷贝构造,拷贝复制,析构函数
  7. CVPR2020 Oral|场景去遮挡新方法:港中文首次提出自监督新框架,已开源
  8. 项目助理这个工作怎么样_影楼化妆师这个工作怎么样?
  9. .NET 将 .config 文件嵌入到程序集
  10. Shell命令学习笔记
  11. 基于OpenCV实现二值图细化,骨骼化并求出端点和交叉点
  12. 2021-05-15 MySql面试题 通用篇
  13. 华硕afudos刷bios_华硕M2N-MX SE PLUS主板 如何用afudos命令刷BIOS
  14. matlab常数模块,simulink怎样输入常数
  15. WIN10 拨号连接下 如何开启移动热点
  16. IDEA价格对程序员来说九牛一毛,为啥这么多人用破解版?
  17. 刷脸支付代理收益盈利模式
  18. python爬虫篇,零基础学爬虫之精华版
  19. TP、FP、TN、FN傻傻分不清楚
  20. 记录虚拟机中更改虚拟网络编辑器无效的解决方法

热门文章

  1. DeepCTR反复安装各种库numpy,tensorflow
  2. 使用aggregate函数计算平均数
  3. 新用户,玩「聊天宝」完整过程(亮点槽点)
  4. 2022年全国职业院校技能大赛“网络安全”竞赛试题官方答案
  5. 施工阶段如何应用BIM技术,建模助手有话说
  6. 编写网页的基本格式(标签)
  7. 注册URL Scheme步骤以及打开其他App
  8. 平安WiFi牵手“黑科技“,引领WiFi行业新变革
  9. 关于String 对象的 intern()方法的使用
  10. Hexo博客优化:在Next主题中设置进阶版Live2D看板娘————拒绝踩坑!!!!