let特性:
1.不重复赋值
var a =10;
var a=20; // 输出20
let a=10;
let a=20; // 报错
2.块级作用域
var 属于全局变量
var a=10;
function fn(){
console.log(a); // 输出结果 10
}
fn();
let 属于块级作用域({},for,while,if)
let a=10;
{function fn(){
console.log(a); // 会报错
}
}
fn();
3.不存在变量提升
在var中 ,声明变量没有赋值,会 自动赋值undefined
在let中, 声明变量没有赋值,会报错
4.不影响作用域链
在代码块中添加函数,不会收到影响
{
let a = "勇狗";
function fn() {
console.log(a);
}
fn();
}