闭包

  • 1、闭包是什么?
  • 2、闭包可以解决什么问题?
  • 3、闭包的缺点

1、闭包是什么?

闭包是一个函数加上到创建这个函数的作用域的链接,就是一个作用域可以访问到另一个作用域的变量,闭包‘关闭’了函数的自由变量

function fun(){var a = 10;console.log( a )
}
fun()

函数都有垃圾回收机制,上面的这个函数,在运行完之后变量a就被回收了,但是下面的函数:


function fun(){var a = 10;return function () { console.log( a )}
}
fun()()

执行完之后变量a并没有被回收,原因是如果被回收了,打印a是会报错的。

那这是为什么呢?
闭包关闭了函数的自由变量,也就是变量不会被回收。

2、闭包可以解决什么问题?

能够完成同步任务与事件循环任务之间传递参数

看下面的例子:

var lis = document.getElementsByTagName('li')
for(var i = 0;i < lis.length;i ++){lis[i].onclick = function(){alert(i)}
}

1、先执行同步任务,i=4
2、执行事件循环,所以alert的i始终是4


var lis = document.getElementsByTagName('li')
for(var i = 0;i < lis.length;i ++){(function (i) { lis[i].onclick = function(){alert(i)}})(i)
}

1、使用闭包传值
2、成功实现每次打印出正确的i

3、闭包的缺点

1、变量会驻留在内存中,造成内存损耗问题。
解决方式:把闭包的函数设置为null,如何设置呢,看下面:

var lis = document.getElementsByTagName('li')
for(var i = 0;i < lis.length;i ++){(function (i) { lis[i].onclick = function(){alert(i)}lis[i] = null})(i)}

2、内存泄漏(ie) ==>可说可不说,如果说一定要提到ie浏览器,因为火狐、chrome浏览器都不会造成这个问题

javaScript基础面试题 ---闭包相关推荐

  1. 常见JavaScript基础面试题上(附答案)

    常见JavaScript基础面试题上(附答案) 1.JavaScript有哪些垃圾回收机制? 有以下垃圾回收机制. 标记清除( mark and sweep) 这是 JavaScript最常见的垃圾回 ...

  2. JavaScript基础面试题及答案

    JavaScript基础面试题及答案① 1 介绍JavaScript的基本数据类型 3 jQurry使用建议 4 Ajax使用 5 JavaScript有几种类型的值? 6 栈和堆的区别? 7 Jav ...

  3. 50道JavaScript基础面试题(附答案)

    50道JavaScript基础面试题(附答案) 1 介绍JavaScript的基本数据类型 2 说说写JavaScript的基本规范? 3 jQuery使用建议 4 Ajax使用 5 JavaScri ...

  4. JavaScript基础面试题,h5前端开发

    标准文档流 标准文档流,指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式.前面内容发生了变化,后面的内容位置也会随着发生变化. HTML就是一种标准文档流文件 HTML中的标准 ...

  5. 学生党必看,JavaScript基础面试题

    故事开篇: 看到一则帖子,讲一个学历只是普通的大专毕业的程序员,做前端5年左右的时间了,中间干过3家公司,都是属于中型互联网企业和创业型的公司,规模不算大.很苦恼进不了大厂,一直在中小公司里打滚天天切 ...

  6. 2019年最全面最新200+道JavaScript基础面试题(上)

    在此之前,我也跟大家分享过很多的面试题,今天我要跟大家分享的这个JavaScript的面试一共有200多道,适用于前端学习与前端求职者,面试刷题,里面涵盖的内容比较广,今天只是整理了部分面试题,希望对 ...

  7. JavaScript 基础 面试题

    目录 如何判断 JavaScript 的数据类型? 简述创建函数的几种方式? Javascript 创建对象的几种方式? JavaScript 内置的常用对象有哪些?并列举该对象常用的方法? === ...

  8. javaScript基础面试题 ---null 与 undefined

    null 与 undefined 奇怪点 原因 具体区别 奇怪点 有点奇怪的是:JavaScript语言竟然拥有两个表示"无"的值:undefined与null.这是为什么? 原因 ...

  9. JavaScript基础面试题总结01

    1. JavaScript 的基本类型有哪些?引用类型有哪些?null 和 undefined 的区别? 数据类型: 基本数据类型:Number.String.Boolean.undefined .n ...

最新文章

  1. 【C++语法】回车与换行(vs2008)
  2. 在安装完成oracle的时候,需要su - oracle,但有时候出现ulimit pize...
  3. JS事件:target与currentTarget区别
  4. Docker镜像仓库
  5. 欢迎来到开源的世界!
  6. java学习(98):线程join使用中断进行另一个
  7. SpringBoot项目中Controller层代码编写规范整理
  8. Android Camera高级特性——手动对焦
  9. 如何清除windowsoffice KMS激活
  10. 立图教育-专业的职业培训机构
  11. 智能发展的四个层次:运算智能,感知智能,认知智能,强智能。道翰天琼认知智能。
  12. C语言-数据输入与输出函数
  13. 正则表达式校验邮箱号、手机号、身份证号码等等
  14. Activity 重启recreate() 与ViewPager一起使用出现的问题
  15. conhosts 占用CPU
  16. STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
  17. 生产打印机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 推荐六种查看Android系统源码的网址
  19. plt.text() 函数
  20. java如何获得wlan mac_如何获取客户端MAC地址(三个方法)

热门文章

  1. u盘拷贝服务器文件,服务器向u盘拷贝数据库
  2. 喜闻乐见之Activity生命周期
  3. android弹幕功能,很棒的Android弹幕效果实例
  4. 【QQ登录------第三方登录的实现流程】
  5. LeetCode——面试题 10.11. 峰与谷(JAVA)
  6. markdown基本用法
  7. 内存分配器 (Memory Allocator)
  8. Material Theme on sublime text 3 一个用起来很好的Sublime主题
  9. 使用环信提供的uni-app Demo,快速实现一对一单聊
  10. MongoDB 存储图片