var与let、const的区别

一、 var声明的变量会挂载在window上,而let和const声明的变量不会。

var a = 100;
console.log(a,window.a) //100 100
			
let b = 10;
console.log(b,window.b) //10 undefined
			
const c = 1;
console.log(c,window.c) //1 undefined

二、 var声明的变量存在变量提升,let和const不存在变量提升

console.log(a); //声明的变量在没有赋值前输出undefined
var a = 100;
			
console.log(b); //报错,找不到b这个变量
let b = 10;
			
console.log(c); //报错,找不到c这个变量
const c = 10;

三、 let和const声明形成块作用域

if(1){
var a = 100;
let b = 10;
}
console.log(a); //100
console.log(b); //报错,找不到b这个变量
if(1){
var a = 100;
const c = 1;
}
console.log(a); //100
console.log(c); //报错,找不到c这个变量

四、 同一作用域下let和const不能声明同名变量,而var可以

var a = 100;
console.log(a); //100
			
var a = 10;
console.log(a); //10
let a = 100;
let a = 10;
//报错,标识符a已经被声明了

五、 暂存死区

var a = 100;
if(1){
a = 10;
//在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
//而这时,还未到声明时候,所以控制台Error : a is not defined
let a = 1;
}

六、 const

/*
1.一旦声明变量必须赋值,不能使用null占位。
2.声明后不能再更改。
3.如果声明的是复合类型数据,可以修改其属性
*/
		   
const a = 100;
		   
const list = [];
list[0] = 10;
console.log(list) //[10]
		   
const obj = {a:100};
obj.name = 'apple';
obj.a = 10000;
console.log(obj) //{a: 10000, name: "apple"}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值