1.Var可以看成是JavaScript语言设计上的错误(if和for都没有块级作用域),Brendan Eich决定修复这个错误,所以提出了let。Let是一个更完美的var,因为let是有块级作用域的,var没有。
2.变量作用域:变量在什么范围内是可用的。

-
If没有块级作用域引起的问题
注意:name属性本来是在if里面定义的,按道理只能在if里起作用。但是现在是全局都可以用。引发作用域问题。
注意:闭包可以解决块级作用域,因为函数就是一个作用域,if,for是没有块级作用域。
-
for没有块级作用域引起的问题
定义5个按钮,分别为按钮添加单击事件,我们从控制台可以看到,无论哪个按钮被单击,控制台总打印第5个按钮被点击,因为i的值在遍历后已经变成5了。在添加事件的函数内的i已经变成5.
-
let块级作用域
用let替换var,完美解决问题、
网友评论