变量
原来的声明:var 缺点:1. 可以重复声明(导致变量被覆盖),2. 无法限制修改, 3. 没有块级作用域
es6的声明 1.let 不能重复声明,变量可以修改,有块级作用域。2. const 不能重复声明,常量不能修改,有块级作用域。
块作用域的好用,例:
window.onload = function(){
var btn = document.getElementByTagName('input')
//1
for (var i = 0;i<btn.lenght;i++){
btn[i].onclick = function(){
alter(i) //由于没有块级作用域 三个按钮都是弹出3
}
}
//2 函数作用域解决
for (var i = 0;i<btn.lenght;i++){
(function(i){
btn[i].onclick = function(){
alter(i) //由于没有块级作用域 三个按钮都是弹出3
})(i)//有函数作用域,分别弹出,1,2,3
}
3>let 块级作用域解决
for (let i = 0;i<btn.lenght;i++){
btn[i].onclick = function(){
alter(i) //由于有块级作用域 三个按钮分别是1,2,3 。简单粗暴解决了
}
}
<input type = 'button' value = '按钮'>
<input type = 'button' value = '按钮'>
<input type = 'button' value = '按钮'>