我在前一篇讨论let与var区别的博客中,顺带一笔带过了let与var在for循环中的不同表现,虽然解释了是块级作用域的影响,但具体是怎么去影响的呢,我尝试的去理解了下,这篇博客主要从for循环步骤拆分的角度去理解两者的区别。 一、一个简单的for循环问题与我思考后产生的问题 还是这段 ...
在for循环中使用let时,结果如下 for内部定义的i在循环结束后不会覆盖外部的i 在for循环中使用var,且不控制i的作用域时,结果如下 第一个for循环内部定义的i并不会创建,而是直接使用外部中的i,故在循环结束时外部的i变为了 。 第二个for循环直接使用了外部的i 把第一个for循环存于匿名函数中,第二个for循环使用var创建变量i,结果如下 第一个for循环置于匿名函数,会创建一个 ...
2019-02-15 13:19 0 544 推荐指数:
我在前一篇讨论let与var区别的博客中,顺带一笔带过了let与var在for循环中的不同表现,虽然解释了是块级作用域的影响,但具体是怎么去影响的呢,我尝试的去理解了下,这篇博客主要从for循环步骤拆分的角度去理解两者的区别。 一、一个简单的for循环问题与我思考后产生的问题 还是这段 ...
var 声明 let 声明 上面的代码,因为在for循环中使用了let声明循环变量, 所以每一个值都会存在于单独的作用域不会被覆盖掉,因此,循环结束后得到的值是0,1,2,3,4 ...
for 语句用于创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔。 for(){},整体是一个块级作用域。 使用以下代码举例: 此时会产生两块作用域, 第一层:for循环 第二层:定时器,每隔一秒执行一次 使用var ...
直接来一个经典案例: setTimeout是异步执行的,1000毫秒后向任务队列里添加一个任务,只有主线上的全部执行完才会执行任务队列里的任务, 所以当主线程for循环执行完之后 i 的值为5, 这个时候再去任务队列中执行任务,i全部为5; 每次for循环的时候setTimeout都会 ...
1.作用域的问题 作用域可以简单的理解为作用的范围,一般就是大括号就是一个域,也就是一个范围,一个空间,如果当前这个大括号内找不到变量的初始值,就回去上一级中去找,这里需要注意的有以下三点。 2.for循环内想依次获取索引值问题,点击每一个li弹出索引 我们可能会这样写 ...
是“被重新声明的”, 但运行时却不会出错。 for循环不是闭包,可以使用dis模块分解以下代码可以 ...
前言 对呀初学JavaScript的同学来说,变量提升永远都是过不去的坎,相信我们都遇到过这种情况,看下面 问题: var 变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。 每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部 ...
上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向 ...