
今天了解一下var、let和const
作用域不同
如果用var声明一个变量,全局均可使用,但是let所声明的变量仅可在所在的最内侧区块使用。例如:
while(1){
let param1 = 1;
var param2 = 2;
}
alert(param1); //无法访问
alert(param2); //可以访问
这一点其实也是let用法最广泛的特点,比如我们在使用一个for循环时,所声明的i只使用在循环中,即可使用let。
let具有“暂时性死区”
alert(a);
var a = 1;
以上语句会出现undefined
alert(b);
let b = 2;
以上语句执行直接会报错。这也是let的特性之一:在被定义之前,无法被访问。
let无法被重复声明
在相同的作用域内,已被let声明的变量无法被var和let声明第二次。
const声明常量
用const声明的是常量,一旦声明值不可改变,而且声明时一定要给常量一个值,也就是声明必须初始化。
但是要注意一点:用const声明的并非真正的常量,用const声明的对象和数组可以更改,但不可重新赋值。
例如:
const person = {
name: "tom",
age: 12
};
person.name = "jack";
alert(person.name); //jack
/*------------------------------------------*/
const person = {
name: "tom",
age: 12
};
const person = {
name: "jack",
age: 12
}
alert(person.name); //报错
const和let的相同点
- 两者都是只能作用在一个所在最内侧的区块中
- 两者不可重复声明
const和let的区别
- const声明时必须初始化,let不用
- const声明后无法更改值,let可以
let和const的浏览器支持环境

