作用域:
全局作用域
局部作用域(函数作用域)
块作用域
区别:1、var有变量提升,而let没有;2、let不允许在相同的作用域下重复声明,而var允许;3、let没有暂时性死区问题;4、let创建的全局变量没有给window设置对应的属性;5、let会产生块级作用域,var不会。
let 存在块作用域 var 没有
{
var a = 10;
let b = 100;
console.log("内部" + a)
console.log("内部" + b)
}
console.log("外部" + a)
console.log("外部" + b);//报错
let声明不存在变量提升
console.log(a);
var a = 10;
let a = 100;//报错 先声明再使用
let 存在暂时性死区
var a = 100;
{
a = 10;//全局
console.log(a)
let a = 100;
}
let 不能在同一个作用域内部重复声明
{
let a = 100;
console.log(a);
let a = 10;
}