学习:面试题:var与let的区别

1.全局作用域

var是全局的变量,let不是全局

2. 块级作用域

在块作用域中两者的区别较为明显, let只在for()循环中可用,而 var是对于包围for循环的整个函数可用

3.重复声明

var的变量名可以重复,let的就不行,当var与let混合使用变量名也不能重复

4.暂时性死区(TDZ)

这个就要提到,var和let其实都是可以变量提升的。

在很多非官方文档中说let是不会提升的,

但是查找MDN我们可以看到两个都是会提升不过提升后有不同的结果。

var提升后在MDN中说了会执行第一,第二两个情况。

let提升后执行的第三种情况,这其实就是暂时性死区。

比如:

console.log(a)

let a = 2;

执行时。let a = 2;会被提升到第一行,

let a = 2;

console.log(a)

let a = 2;

但是在提升后,第一行和声明变量的之间会产生一个暂时性死区,在这个死区里面是不能访问的。也就是说:

let a = 2;

console.log(a)//这一排其实在死区里,所以运行会报错。不能访问a。

let a = 2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值