//为什么新增let声明变量的关键字
//var 不好用 1.var 可以重复声明 2.var 无法限制修改,var 没有块级作用域
//重复声明
var a=10 ;
var a =20 ;
/*
块级作用域:{} if(){} for(){}
只有在function(){} 中有作用域
*/
var 作用域问题
<button1></button1>
<button2></button2>
<button2></button3>
var btns =document.getElementsByTagName("button");
for(var i=0;i<btns.length;i++){
//之前是需要通过闭包来解决var 作用域问题
(funtion(i){
btns[i].addEventListener('click',function(){
console.log(i)
})
})(i)
}
//要是使用let声明变量就不需要使用闭包解决了
<button1></button1>
<button2></button2>
<button2></button3>
let btns =document.getElementsByTagName("button");
for(let i=0;i<btns.length;i++){
btns[i].addEventListener('click',function(){
console.log(i)
})
}
总结:ES6新增let和const命令,用来声明变量,类似于var
let声明的变量不,只在let命令所在的代码块内有效
let命令不存在变量提升
let命令不允许在相同作用域内,重复声明同一个变量