同学们在刚准备面试时肯定见过一道经典面试题:

for(var i = 0; i < 10; i++) {setTimeOut(function(){console.log(i)})
}
// 输出 10 10 10 10 10 10 10 10 10 10for(let i = 0; i < 10; i++) {setTimeOut(function(){console.log(i)})
}
// 输出 0 1 2 3 4 5 6 7 8 9

有的同学就很疑惑,怎么肥事,这不一样嘛!


然后就去百度查查

然后百度就会告诉你:

第一个变量i是用var声明的,在全局范围内有效,所以全局中只有一个变量i,每次循环时,setTimeOut定时器里指的是全局变量i,而循环里的十个setTimeOut是在循环结束后才执行,所以输出十个10。
第二个变量i是用let声明的,当前的i
只在本轮循环中有效,每次循环的i其实都是一个新的变量,所以setTImeOut定时器的里面的i其实不是同一变量,所以输出0123456789

看完以后

似懂非懂

就算使用var定义的i是全局变量,每次循环都改变全局范围里的i的值,但是循环一次,执行一次setTimeOut啊,不也应该输出当前i值吗?

em…

不管,面试官问我我就照着这么回答就行了,面试官肯定明白我说的什么

其实之前我理解的也是很片面的,直到这两天看见一篇Google大佬的文章,全是英文,看了好半天****,下面

for循环中let,var 的经典面试题:for循环中 console.log(i)详解相关推荐

  1. 孟欣 - js赋值顺序/var a = {n: 1} var b = a; a.x = a = {n: 2} console.log(a.x); console.log(b.x)

    赋值顺序 以下为网上一个非常经典的面试题: var a = {n: 1}   var b = a;   a.x = a = {n: 2}   console.log(a.x);   console.l ...

  2. [Python从零到壹] 六十四.图像识别及经典案例篇之图像傅里叶变换和傅里叶逆变换详解

    祝大家新年快乐,阖家幸福,健康快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所 ...

  3. 安全日志:/var/log/secure 详解

    安全日志:/var/log/secure /var/log/secure 一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说明有人在破解你的 root 密码,或 ...

  4. 经典的卷积网络架构(二)——GoogLeNet [inception v1] 详解

    GoogLeNet出自论文Going Deeper With Convolutions 如有错误,欢迎指正! (未完待续) 目录 论文阅读 补充知识点:1*1卷积的作用 网络结构分析 参考博文 参考代 ...

  5. CSS3 经典教程系列:CSS3 圆角(border-radius)详解

    <CSS3 入门教程系列>前一篇文章详细介绍了 CSS3 RGBA 特性的用法,今天这篇文章我们在一起来看看 CSS3 中用于实现圆角效果的 border-radius 属性的具体用法. ...

  6. 经典排序算法(11)——计数排序算法详解

    计数排序(Counting sort)是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出.它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k ...

  7. 经典排序算法(9)——桶排序算法详解

    桶排序(Bucket sort)或所谓的箱排序,并不是比较排序,它不受到 O(nlogn) 下限的影响. 一.算法基本思想 (1)基本思想 桶排序工作的原理是将数组分到有限数量的桶子里,每个桶子再个别 ...

  8. 经典排序算法(4)——折半插入排序算法详解

    折半插入排序(Binary Insertion Sort)是一种插入排序算法,通过不断地将数据元素插入到合适的位置进行排序,在寻找插入点时采用了折半查找. 一.算法基本思想 (1)基本思想 折半插入排 ...

  9. 经典排序算法(3)——直接插入排序算法详解

    直接插入排序(Insertion Sort)是一种插入排序算法,通过不断地将数据元素插入到合适的位置进行排序. 一.算法基本思想 (1)基本思想 直接插入排序的基本思想是:顺序地把待排序的序列中的各个 ...

最新文章

  1. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?
  2. 如何使对话框中接收到WM_CHAR消息(Windows编程)
  3. gta5结局杀老崔我哭了_都已经2020年了,怎么还有人在买GTA5?
  4. python语言怎么用-Python语言应用解析,如何入门学Python?
  5. 区块链BaaS云服务(38)点存DCpool分布式存储
  6. shell和linux的认识
  7. 移动端系列讲解之字体单位
  8. 简明Python教程学习笔记_1_基本
  9. 关于docker环境下mysql的使用相关
  10. 基于DAYU的实时作业开发,分分钟搭建企业个性化推荐平台
  11. linux清理磁盘空间的脚本,在Ubuntu和Linux Mint上释放空间的7种简单方法
  12. 宏基因组应用_宏基因组及宏转录组测序揭示极端环境微生物的生态学作用
  13. mongodb 的安装使用步骤
  14. android内存泄露问题分析,内存泄露实例分析 -- Android内存优化第四弹
  15. r语言 rgl 强制过程中_R语言中的方差分析方法汇总
  16. 将vue,H5项目打包成app,apk安装包
  17. windows10安装masscan
  18. word文档如何画线条流程图_如何利用word文档工具绘制流程图
  19. PLM Agile BOM表结构笔记
  20. 浅谈ACL在校园网中的应用

热门文章

  1. restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...
  2. PHP为什么empty可以访问不存在的索引
  3. 蝌蚪与青蛙是同一个物种么?
  4. flink连接kafka整合hbase,scala
  5. 如何成为一个优秀的高级C++程序员
  6. Hbase PageFilter 取出数量不准确问题
  7. 技术实践第四期|解读移动开发者日常-性能监控平台应用
  8. 码住!Flink Contributor 速成指南
  9. 海量结构化数据解决方案-表格存储场景解读
  10. Knative Service 之流量灰度和版本管理