let const var 的区别
1.var声明的变量会直接在window中,造成全局污染,let,const声明的变量不会挂在window中
let a = 2;
console.log(a);
console.log(window.a);//undefined
const b = 1;
console.log(b);
console.log(window.b);//undefined
let c = 3;
console.log(c);
console.log(window.c);//3
2.新增了一个块级作用域{},以前只有函数作用域,全局作用域
{
let a = 2;
const b = 2;
var c = 2;
}
console.log(a) //报错
console.log(b) //报错
console.log(c) //2
3.let,const是不允许重复声明,var可以
let a = 3;
let a = 4;
console.log(a) //报错
const b = 1;
const b = 2;
console.log(b) //报错
let c = 3;
let c = 4;
console.log(c) //替换前面的 3
4.let var不会有声明提前
let a;
console.log(a) //undefined
const a;
console.log(a) //报错
var a;
console.log(a)
5.var声明变量存在遍历提升,let 和const 不存在变量提升,只是人为看到的效果,实际上是有声明提前,提前临时性的死区中:Cannot access ‘num’ before initialization) 面试点
console.log(a) //undefined 变量提升
var a = 100
console.log(b) //报错
var b = 100
console.log(c) //报错
var a = 100
const比let新增几点:
1.不允许被修改,不允许改变内存空间的地址
const a = 3;
a = 4;
console.log(a)
2.const声明和赋值必须一次性完成,并且后期不允许改变存储空间的地址
const abc;
console.log(abc);//报错
3.如果声明的是复合类型的数据,可以修改属性值
const obj= {
name : 'aa',
}
obj.name = 'bb';
console.log(obj.name);//bb