闭包

常见的闭包例子

function biBao(){var arr = [];for (var i = 0; i < 5; i++) {arr[i] = function(){return i;}              }return arr
}
console.log(biBao()[0]())  //5
复制代码

1.大家可以看到,控制台输出的是 5,之前我并不清楚这段代码实质上是发生了什么(不知道是不是只有我~~),然后我去了网上找答案,最后终于得了个结论

for 循环内部把 function(){return i} 赋给 arr[i] 的时候,function(){return i}实质上只是一个函数声明而已。所以biBao()返回的是一个带有5个函数声明的数组,即[function,function,function,function,function]biBao()[0]即取出arr数组的一个个函数声明,biBao()[0]()即是开始运行arr数组中的第一个函数,然而这个时候for循环已经早已运行完毕了,这个时候i是循环过后的i所以i这个时候等于5

2.为什么上述例子吧for循环var i = 0;的声明改成let i= 0;就可以解决问题了?

如果变量ilet声明的,那么i就只能在本次循环中有效,所以每一次循环的i其实都是一个新的变量,然后javascript引擎内部会记住上一轮循环的i的值,初始化本轮的i时,在上一轮的基础上进行计算

转载于:https://juejin.im/post/5b377ed66fb9a00e883f3cc8

我的关于前端一些知识点的理解《一》相关推荐

  1. 前端面试知识点目录整理

    前端面试知识点目录整理 基本功考察 1.关于Html 1.html语义化标签的理解.结构化的理解:能否写出简洁的html结构:SEO优化. 2.h5中新增的属性,如自定义属性data.类名classN ...

  2. 前端常见知识点三之HTML

    前端常见知识点三之HTML 1.HTML5 drag api dragstart:事件主体是被拖放元素,在开始拖元素时触发 darg:事件是被拖放元素,在正在拖放时触发 dragenter:事件主体是 ...

  3. 2021届前端面试知识点(其他)

    2021届前端面试知识点(其他) 1. 什么是"前端工程化"? 2. xss跨站脚本攻击原理?如何进行?防御手段? 3. CSRF跨站请求伪造原理?如何进行?防御手段? 4. Sq ...

  4. 前端面试知识点整理——网络

    前端面试知识点整理--网络 文章目录 一. 进程(process)和线程(thread) 二. 浏览器属于一种多进程的架构 三.CRP,关键渲染路径(critical rendering path) ...

  5. 前端面试知识点大全——JS篇(三)

    总纲:前端面试知识点大全 目录 1.变量声明提升 2.冒泡机制 3.attribute 和 property 4.document load 和 document DOMContentLoaded 5 ...

  6. Web前端css知识点概括

    Web前端css知识点的简单概括如下,方便记忆. 1.字体,背景(font-style,font-weight,font-size/line-height,font-family...backgrou ...

  7. 前端常见知识点五之Fetch

    前端常见知识点五之Fetch fetch()是 XMLHttpRequest 的升级版,用于在 JavaScript 脚本里面发出 HTTP 请求. fetch发送2次请求的原因 fetch发送pos ...

  8. 前端常见知识点二之浏览器

    前端常见知识点之浏览器 目录 前端常见知识点之浏览器 1.web Quality(无障碍) 2.几个实用的BOM对象方法 3. cookie.sessionStroage.localStroage的区 ...

  9. [css] 说说你对前端二倍图的理解?移动端使用二倍图比一倍图有什么好处?

    [css] 说说你对前端二倍图的理解?移动端使用二倍图比一倍图有什么好处? 二倍图是指单位面积下设备像素与css像素个数之比为 4 的位图.移动端使用二倍图可以在Retina屏幕下保真展示. 个人简介 ...

最新文章

  1. linux下tomcat服务的相关命令
  2. HBase性能优化方法总结(二):写表操作
  3. 有限覆盖定理证明区间套_圆内整点问题的开普勒猜想证明,关于圆内整点问题误差项的估值E(r)=1-x,x=sin(nx)...
  4. ubuntu下安装golang环境
  5. 苹果电脑的文件怎样拷贝入移动硬盘里
  6. 常见概率分布的无记忆性分析
  7. 自动化测试面试题整理出炉附答案,建议收藏
  8. APP内搜索:下一代搜索属于百度还是微信?
  9. MatlabR2018aWin 安装教程 (附文件)
  10. 汽车研发的五大阶段及制造的四大工艺
  11. [置顶] 程序员的奋斗史(二十八)——寒门再难出贵子?
  12. centOS和宝塔linux面板详细使用
  13. Springboot+Mysql在线众筹系统
  14. 如何调换手机桌面位置_如何改变华为手机桌面三个方向按键的位置?
  15. CVPRW2021中的事件相机研究(下)
  16. 1500 孤立的诸地区 穆斯林 西方 儒家
  17. 微信的一些优点整理(持续更新)
  18. 汽车业内软件编码规范--MISRA C简介
  19. 网闸设备故障应急处理方案
  20. 以太坊智能合约中随机数预测

热门文章

  1. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)
  2. 烂泥:php5.6源码安装及php-fpm配置与nginx集成
  3. c:redirect标签的使用
  4. Response.getWriter() 和Response.getOutputStream冲突
  5. get 和 post
  6. 我要回家软件_这个中秋节,我也要回家
  7. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
  8. 【Java常识】6.0面向对象认知和Eclipse的实用使用、==号和equals方法的区别
  9. Python到底有多强大?只需 15 行代码即可进行人脸检测
  10. 兵团教师计算机水平考试免考条件,兵团职称计算机考试政策.doc