let与var在循环中的使用
小白前来报道
var 和 let声明的变量之间的区别
- var可以在一个作用域里多次声明同一个变量,并且值会被覆盖,var声明的变量有提升得功能
- let声明的变量在一个作用域里只能出现一次,且声明的变量在一个作用域中出现一次
作用域问题
- 作用域就是你的一段JS代码中变量的使用、访问、被访问的范围;
- 在es5及以前版本中,只有全局作用域,局部作用域( 函数作用域),var定义的如果有function包着 就会把定义的变量提升到函数的最前面 没有的话就是全局变量了
- 在es6中出现了块级作用域,只要出现一个大括号,就相当于一个作用域,let声明的变量,只能在其自身的块级作用域中使用
情况:用let声明时,弹出的就会想要的结果01 2,而用var声明时弹出的是三个3
原因:var定义的如果有function包着 就会把定义的变量提升到函数的最前面 没有的话就是全局变量了, , 所以, 也就是说,,, 在执行addEventListener之前,, i就已经for循环结束, 变成3, ,作为一个全局变量进到add。。 里面了