es6里新增加了let和const语法
1.let用来声明变量,用法和var类似,但是let声明的变量,只能在他的块级作用域有效
![](https://img.haomeiwen.com/i16121796/8fbd9b2f4017ee5e.jpg)
2.使用let声明的变量作用域不会被提升
![](https://img.haomeiwen.com/i16121796/7bcd9093cade5745.jpg)
3.在相同作用域下不能声明相同的变量,只能唯一,否则报错
![](https://img.haomeiwen.com/i16121796/2511ec99b61455ce.jpg)
4.在for循环中体现了let父子作用域
![](https://img.haomeiwen.com/i16121796/54fa3fc4b68ed656.jpg)
![](https://img.haomeiwen.com/i16121796/aeb05eeb70483cfc.jpg)
![](https://img.haomeiwen.com/i16121796/f50506d105e56f9a.jpg)
如果使用var来声明会一直输出最后一位的长度
![](https://img.haomeiwen.com/i16121796/90315cb636f1a781.jpg)
![](https://img.haomeiwen.com/i16121796/4fee9eac7fcd62a5.jpg)
上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给按钮[i],里面的i指向的就是全局的i。也就是说,所有按钮的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 5
网友评论