最近有小伙伴问到关于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
作者:尼达叶蹦蹦呛
链接:https://blog.csdn.net/weixin_45688725/article/details/103966927