const与let
在ES6中添加了let及const声明变量
const
1、声明一个变量,且这个值不能再被改变,且声明变量时要同时赋值;
const COUNT=1;
COUNT=2; //报错,COUNT的值不能再改变
2、变量只在声明的块级作用域里有用;
If(i>10){
const a=1;
}
a; //报错,a只在if作用域里有用
3、声明的变量不能提升;
If(i>10){
console.log(a);
const a=1; //报错,使用之前应先声明
}
4、不能重复声明;
const a=1;
const a=1; //报错
备注:const声明变量,是指内存中保存的值不能变。当声明的变量为基本数据类型时,内存中存的是变量本身,因此不可变。而当声明的变量是复合类型时,内存中存的是指向一个内存空间的位置值(指针),这个位置值不可变,原来是多少仍然是多少,但是指向的这个位置上面保存的值是可变的。
let
1、let声明变量与的特点同const的2、3、4条;
2、比较下面代码:
3、使用let可能会出现的错误;
1) let a=a; //等号左边的a未声明;
2) typeof a; //a存在暂时性死区,未声明不可以使用
let a;