var没有块级作用域,会导致的问题:
问题1:
问题2:
解决方案:
1.使用闭包
在ES5的时代,在javascript里面,只有函数有自己的作用域,才有自己的局部变量,比如If、for都没有自己的作用域,也就是没有自己的局部变量
2.ES6时代,使用let
总结:
ES5中的var是没有块级作用域的(if/for)
ES6中的let是由块级作用的(if/for)
ES5之前因为if和for都没有块级作用域的概念,所以在很多时候,我们都必须借助于function的作用域来解决应用外面变量的问题
ES6中,加入了let,let它是有if和for的块级作用域,