1.var可以重复声明
2.var无法限制修改
如:PI = 3.1415;
3.var没有块级作用域
{
}
像:
if(){
}
for(){
}
这都是块级作用域,在这里面定义的变量则在块级域外面是没法使用的。
4.let和const不能重复声明
5.let是可以重复修改的,但是const是常量,是不能重复修改的。
6.块级作用域
语法快不仅仅是if,for等这些,如下面的也是块级作用域:
7.块级作用域的用法:
现在有三个button,分别点击,传统的写法是:
window.onload = function(){
var aBtn = document.getElementByTagName("input");
for(var i=0;i<aBtn.length;i++){
aBtn[i].onclick = function(){
alert(i)
}
}
}
结果每次弹出的都是3,然后我们采用函数作为块级作用域的方式在外边增加一层,如下:
window.onload = function(){
var aBtn = document.getElementByTagName("input");
for(var i=0;i<aBtn.length;i++){
(function(i){
aBtn[i].onclick = function(){
alert(i)
}
})(i)
}
}
虽然问题解决了,但是如果用现在ES6的let,本身就是在块级作用域中有效,更加方便;
window.onload = function(){
var aBtn = document.getElementByTagName("input");
for(let i=0;i<aBtn.length;i++){
aBtn[i].onclick = function(){
alert(i)
}
}
}
最后总结如下:
|:-