javaScript基础面试题 ---闭包
闭包
- 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基础面试题 ---闭包相关推荐
- 常见JavaScript基础面试题上(附答案)
常见JavaScript基础面试题上(附答案) 1.JavaScript有哪些垃圾回收机制? 有以下垃圾回收机制. 标记清除( mark and sweep) 这是 JavaScript最常见的垃圾回 ...
- JavaScript基础面试题及答案
JavaScript基础面试题及答案① 1 介绍JavaScript的基本数据类型 3 jQurry使用建议 4 Ajax使用 5 JavaScript有几种类型的值? 6 栈和堆的区别? 7 Jav ...
- 50道JavaScript基础面试题(附答案)
50道JavaScript基础面试题(附答案) 1 介绍JavaScript的基本数据类型 2 说说写JavaScript的基本规范? 3 jQuery使用建议 4 Ajax使用 5 JavaScri ...
- JavaScript基础面试题,h5前端开发
标准文档流 标准文档流,指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式.前面内容发生了变化,后面的内容位置也会随着发生变化. HTML就是一种标准文档流文件 HTML中的标准 ...
- 学生党必看,JavaScript基础面试题
故事开篇: 看到一则帖子,讲一个学历只是普通的大专毕业的程序员,做前端5年左右的时间了,中间干过3家公司,都是属于中型互联网企业和创业型的公司,规模不算大.很苦恼进不了大厂,一直在中小公司里打滚天天切 ...
- 2019年最全面最新200+道JavaScript基础面试题(上)
在此之前,我也跟大家分享过很多的面试题,今天我要跟大家分享的这个JavaScript的面试一共有200多道,适用于前端学习与前端求职者,面试刷题,里面涵盖的内容比较广,今天只是整理了部分面试题,希望对 ...
- JavaScript 基础 面试题
目录 如何判断 JavaScript 的数据类型? 简述创建函数的几种方式? Javascript 创建对象的几种方式? JavaScript 内置的常用对象有哪些?并列举该对象常用的方法? === ...
- javaScript基础面试题 ---null 与 undefined
null 与 undefined 奇怪点 原因 具体区别 奇怪点 有点奇怪的是:JavaScript语言竟然拥有两个表示"无"的值:undefined与null.这是为什么? 原因 ...
- JavaScript基础面试题总结01
1. JavaScript 的基本类型有哪些?引用类型有哪些?null 和 undefined 的区别? 数据类型: 基本数据类型:Number.String.Boolean.undefined .n ...
最新文章
- 【C++语法】回车与换行(vs2008)
- 在安装完成oracle的时候,需要su - oracle,但有时候出现ulimit pize...
- JS事件:target与currentTarget区别
- Docker镜像仓库
- 欢迎来到开源的世界!
- java学习(98):线程join使用中断进行另一个
- SpringBoot项目中Controller层代码编写规范整理
- Android Camera高级特性——手动对焦
- 如何清除windowsoffice KMS激活
- 立图教育-专业的职业培训机构
- 智能发展的四个层次:运算智能,感知智能,认知智能,强智能。道翰天琼认知智能。
- C语言-数据输入与输出函数
- 正则表达式校验邮箱号、手机号、身份证号码等等
- Activity 重启recreate() 与ViewPager一起使用出现的问题
- conhosts 占用CPU
- STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
- 生产打印机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 推荐六种查看Android系统源码的网址
- plt.text() 函数
- java如何获得wlan mac_如何获取客户端MAC地址(三个方法)