- var
重复声明
函数级作用域
- let 变量
- const 常量
不能重复声明
块级作用域
ES5没有作用域的概念,这样写,弹出的全是3,解决办法是用闭包
var btn = document.getElementsByTagName('input');
for(var i = 0; i < btn.length; i++){
btn[i].onclick = function(){
alert(i)
}
}
var btn = document.getElementsByTagName('input');
for(var i = 0; i < btn.length; i++){
(function(i){
btn[i].onclick = function(){
alert(i)
}
})(i)
}
ES6的解决办法是用let,ES6自己的作用域
var btn = document.getElementsByTagName('input');
for(let i = 0; i < btn.length; i++){
btn[i].onclick = function(){
alert(i)
}
}