我的关于前端一些知识点的理解《一》
闭包
常见的闭包例子
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;就可以解决问题了?
如果变量i
是let
声明的,那么i
就只能在本次循环中有效,所以每一次循环的i
其实都是一个新的变量,然后javascript引擎内部会记住上一轮循环的i
的值,初始化本轮的i
时,在上一轮的基础上进行计算
转载于:https://juejin.im/post/5b377ed66fb9a00e883f3cc8
我的关于前端一些知识点的理解《一》相关推荐
- 前端面试知识点目录整理
前端面试知识点目录整理 基本功考察 1.关于Html 1.html语义化标签的理解.结构化的理解:能否写出简洁的html结构:SEO优化. 2.h5中新增的属性,如自定义属性data.类名classN ...
- 前端常见知识点三之HTML
前端常见知识点三之HTML 1.HTML5 drag api dragstart:事件主体是被拖放元素,在开始拖元素时触发 darg:事件是被拖放元素,在正在拖放时触发 dragenter:事件主体是 ...
- 2021届前端面试知识点(其他)
2021届前端面试知识点(其他) 1. 什么是"前端工程化"? 2. xss跨站脚本攻击原理?如何进行?防御手段? 3. CSRF跨站请求伪造原理?如何进行?防御手段? 4. Sq ...
- 前端面试知识点整理——网络
前端面试知识点整理--网络 文章目录 一. 进程(process)和线程(thread) 二. 浏览器属于一种多进程的架构 三.CRP,关键渲染路径(critical rendering path) ...
- 前端面试知识点大全——JS篇(三)
总纲:前端面试知识点大全 目录 1.变量声明提升 2.冒泡机制 3.attribute 和 property 4.document load 和 document DOMContentLoaded 5 ...
- Web前端css知识点概括
Web前端css知识点的简单概括如下,方便记忆. 1.字体,背景(font-style,font-weight,font-size/line-height,font-family...backgrou ...
- 前端常见知识点五之Fetch
前端常见知识点五之Fetch fetch()是 XMLHttpRequest 的升级版,用于在 JavaScript 脚本里面发出 HTTP 请求. fetch发送2次请求的原因 fetch发送pos ...
- 前端常见知识点二之浏览器
前端常见知识点之浏览器 目录 前端常见知识点之浏览器 1.web Quality(无障碍) 2.几个实用的BOM对象方法 3. cookie.sessionStroage.localStroage的区 ...
- [css] 说说你对前端二倍图的理解?移动端使用二倍图比一倍图有什么好处?
[css] 说说你对前端二倍图的理解?移动端使用二倍图比一倍图有什么好处? 二倍图是指单位面积下设备像素与css像素个数之比为 4 的位图.移动端使用二倍图可以在Retina屏幕下保真展示. 个人简介 ...
最新文章
- linux下tomcat服务的相关命令
- HBase性能优化方法总结(二):写表操作
- 有限覆盖定理证明区间套_圆内整点问题的开普勒猜想证明,关于圆内整点问题误差项的估值E(r)=1-x,x=sin(nx)...
- ubuntu下安装golang环境
- 苹果电脑的文件怎样拷贝入移动硬盘里
- 常见概率分布的无记忆性分析
- 自动化测试面试题整理出炉附答案,建议收藏
- APP内搜索:下一代搜索属于百度还是微信?
- MatlabR2018aWin 安装教程 (附文件)
- 汽车研发的五大阶段及制造的四大工艺
- [置顶] 程序员的奋斗史(二十八)——寒门再难出贵子?
- centOS和宝塔linux面板详细使用
- Springboot+Mysql在线众筹系统
- 如何调换手机桌面位置_如何改变华为手机桌面三个方向按键的位置?
- CVPRW2021中的事件相机研究(下)
- 1500 孤立的诸地区 穆斯林 西方 儒家
- 微信的一些优点整理(持续更新)
- 汽车业内软件编码规范--MISRA C简介
- 网闸设备故障应急处理方案
- 以太坊智能合约中随机数预测
热门文章
- [Android Traffic] 调整定时更新的频率(C2DM与退避算法)
- 烂泥:php5.6源码安装及php-fpm配置与nginx集成
- c:redirect标签的使用
- Response.getWriter() 和Response.getOutputStream冲突
- get 和 post
- 我要回家软件_这个中秋节,我也要回家
- word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
- 【Java常识】6.0面向对象认知和Eclipse的实用使用、==号和equals方法的区别
- Python到底有多强大?只需 15 行代码即可进行人脸检测
- 兵团教师计算机水平考试免考条件,兵团职称计算机考试政策.doc