关于for循环的块级作用域问题总结(一)
最近有小伙伴问到关于for循环和作用域的问题,那么我们今天来总结 一下,遇到这样的问题应该如何解答,当for循环和异步操作又会产生奇妙的作用,今天先不进行总结 先看个正常的for循环吧 for ( var i = 0 ; i < 5 ; i ++ ) { console . log ( i ) } 1.这是个最简单的for循环的遍历,控制台将打印0,1,2 , 3,4 我们来将这个代码变动一下: for ( var i = 0 ; i < 5 ; i ++ ) { } console . log ( i ) ; 2.控制台将只打印5,这个原因是因为JavaScript中没有块级作用域导致的。对于有块级作用域的语言来讲,for语句初始化变量的表达式所定义的变量,只会存在于循环的循环境之中。而对于JavaScript而言,由for语句创建的变量i即使在for循环执行结束后,也依旧会存在于循环外部的执行环境中。 我们来继续变动一下: for ( let i = 0 ; i < 5 ; i ++ ) { } console . log ( i ) ; 3.我们把var改成了let,控制台报错i is not defined。 这是因为let是es6新增的语法,而let具有块级作用域的特点,这么一来let声明的变量只在它所在的代码块有效,所以在外部是访问不到的。 来源: CSDN 作者: