1.let与var一样,用于声明变量,但let声明的变量仅在let所在的代码块内有效。
例如:{
var a=100;
let b=200;
}
console.log(a); 100
console.log(b);// error: b is not defined
2.let不存在变量提升
3.暂时性死区:只要块级作用域内存在let命令,它的所有声明就绑定在这个区域内,不熟外部影响。
var a=200;
{
console.log(a);//undefined
let a=100;
console.log(a);//100
}
4.模块内不允许重复声明
{
var b=100;
let b=200;
}
{
let c=200;
var c=100;
}
{
let c=100;
let c=200;
}
以上代码通通报错。若模块内部使用了let声明一个变量,则不允许重复声明,而模块之间则允许,例如:
{
var a=100;
console.log(a);//100
}
{
let a=200;
console.log(a)//200
}