var 声明的缺点
1、可以重复声明
2、无法限制修改
3、没有块级作用域
let与const
声明
都不能重复声明
1 let a = 1 2 let a = 2 3 //报错 Identifier 'a' has already been declared。const同
修改
let 声明的是变量,可以修改。const声明的是常量,不能修改
不能给常量赋值修改
块级作用域
let和const都是块级作用域
块级作用域用途举例:
1 var aBtn = document.getElementsByTagName('input'); 2 3 for (var i = 0; i < aBtn.length; i++) { 4 aBtn[i].onclick = function () { 5 alert(i) 6 } 7 }
想要的效果是点击按钮,弹出对应的index。这样写导致全部弹出3
第一种修改方式(立即执行函数)
for (var i = 0; i < aBtn.length; i++) { (function (i) { aBtn[i].onclick = function () { alert(i) } })(i) }
第二种方式,利用块级作用域,使用let声明i
1 for (let i = 0; i < aBtn.length; i++) { 2 aBtn[i].onclick = function () { 3 alert(i) 4 } 5 }