开发碎片知识

let 和 var 有什么区别?

2021-06-09  本文已影响0人  Gema玩家

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

2.变量作用域:变量在什么范围内是可用的。

  1. If没有块级作用域引起的问题


注意:name属性本来是在if里面定义的,按道理只能在if里起作用。但是现在是全局都可以用。引发作用域问题。

注意:闭包可以解决块级作用域,因为函数就是一个作用域,if,for是没有块级作用域。

  1. for没有块级作用域引起的问题




定义5个按钮,分别为按钮添加单击事件,我们从控制台可以看到,无论哪个按钮被单击,控制台总打印第5个按钮被点击,因为i的值在遍历后已经变成5了。在添加事件的函数内的i已经变成5.

  1. let块级作用域


用let替换var,完美解决问题、

上一篇 下一篇

猜你喜欢

热点阅读