变量提升:变量在声明之前可以使用,并且代码不报错 (预解释 预解析)
1.用var声明的变量 存在变量提升
2.用let和const声明的变量 不存在变量提升
console.log(a)//10
var a=20;
console.log(b)//Cannot access 'a' before initialization //报错在初始化之前不能访问'a'
let b=10;
暂时性死区:在用let声明一个变量之前 都不能使用这个变量,否则就会报错, 在这之前的代码块,对于这个变量来说都叫暂时性死区
1.用var声明的变量 不存在暂时性死区
2.用let和const声明的变量 存在暂时性死区
var a = 20
console.log(a);//Identifier 'a' has already been declared 标识符“a”已经声明 报错
let a = 10;
重复声明变量:
1.用var声明的变量 允许重复声明
2.用let和const声明的变量 不允许重复声明
var a = 20
console.log(a);//Identifier 'a' has already been declared 标识符“a”已经声明 报错
let a = 10;
是否能修改声明的变量:
//1.用var和let声明的变量 可以重复修改
//2.用const声明的变量 不可以修改
//使用const声明一个引用数据类型,只要不去修改内存地址,那么这个数据里面的内容是可以重复修改的,但是使用const声明的变量必须赋值
const c= 10
c = 20 //Assignment to constant variable. 对常量变量的赋值。报错