资讯专栏INFORMATION COLUMN

for循环let和var在定时器中的变量泄露

PascalXie / 727人阅读

摘要:而命令声明的,在全局范围内都有效,全局只有一个变量,循环执行语句也相当于一个块级作用域。,就是,,,,看一下用降级到的样子基本差不多

前几天面试遇到了一些问题,恰好今天偶然间看到了这个问题,决定记录一下

定时器中打印结果为5,考察知识点变量提升,同步和异步
解答:首先定时器为异步操作,需要等待函数体执行完毕才可以继续执行,也就是此时的0,1,2,3,4已经打印出来了,i=4时条件成立,i++,此时i=5,下一轮判断失败,结束循环
因为var 存在变量提升,相当于这样


所以最后的为5,定时器输出为5

然后我又想了想,如果定时器想要打印出0,1,2,3,4有几种实现方式
第一种:

上结果

采用立即执行表达式来模拟块级作用域,这样的作用是每次将i的值封存在这个匿名函数中,根据作用域返回的定时器会读取匿名函数传递的参数,而不会去读取相隔那么远的放在全局的值,这样就OK了

第二种 es6 let


原理呢和上面差不多,只是采用es6语法,就是let声明的变量只在它所在的代码块有效。而var命令声明的,在全局范围内都有效,全局只有一个变量i,for循环执行语句也相当于一个块级作用域。so,就是0,1,2,3,4

看一下let用babel降级到es5的样子,基本差不多

-----------------------------end------------------------------------------------

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99570.html

相关文章

  • 【拒绝拖延】常见的JavaScript内存泄露原因及解决方案

    摘要:前言内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。这里就讲一些常见会带来内存泄露的原因。解决方案和都设为。 前言 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。这里就讲一些常见会带来内存泄露的原因。 0. 全局变量...

    tangr206 评论0 收藏0
  • JS高程中的垃圾回收机制与常见内存泄露的解决方法

    摘要:解决方式是,当我们不使用它们的时候,手动切断链接淘汰把和对象转为了真正的对象,避免了使用这种垃圾收集策略,消除了以下常见的内存泄漏的主要原因。以上参考资料高程垃圾收集类内存泄漏及如何避免内存泄露及解决方案详解类内存泄漏及如何避免 showImg(http://ww1.sinaimg.cn/large/005Y4rCogy1ft1ikzcqzqj30ka0et77a.jpg); 前言 起...

    kidsamong 评论0 收藏0
  • 详解js变量、作用域及内存

    摘要:不是引用类型,无法输出简而言之,堆内存存放引用值,栈内存存放固定类型值。变量的查询在变量的查询中,访问局部变量要比全局变量来得快,因此不需要向上搜索作用域链。 赞助我以写出更好的文章,give me a cup of coffee? 2017最新最全前端面试题 基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空...

    waltr 评论0 收藏0
  • 【重温基础】22.内存管理

    摘要:内存泄露内存泄露概念在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。判断内存泄漏,以字段为准。 本文是 重温基础 系列文章的第二十二篇。 今日感受:优化学习方法。 系列目录: 【复习资料】ES6/ES7/ES8/ES9资料整理(个人整理) 【重温基础】1-14篇 【重温基础】15.JS对象介绍 【重温基础】16.JSON对象介绍 【重温基础】1...

    Pandaaa 评论0 收藏0
  • [JavaScript 随笔] 垃圾回收

    摘要:在中,由于垃圾回收是自动进行的,所以人们在编码时可能不太会注意这方面。时,引擎统一对所有这些状态的对象进行回收。,表示释放该对象后能得到的内存大小。 在 JavaScript 中,由于垃圾回收是自动进行的,所以人们在编码时可能不太会注意这方面。但事实是,一些 webapp 在使用一段时间后,会出现卡顿的现象,特别是那些单页应用,包括 WebView 方式的手机 app 。这个现象在传统...

    ConardLi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<