var
1、声明提升
2、重复定义存在变量覆盖 (var obj ={},obj=’’)
3、没有块级作用域
下面展示一些 内联代码片
。
function fn2() {
for (var i = 0; i < 10; i++) {
console.log(i);
}
console.log(i);// 输出不报错! 不存在块级作用域;如果let定义就报错
}
const
1、const声明的值一定要赋值 否则报错,let 和 var声明的不报错
2、const 不存在声明提升 和 变量覆盖问题,
3、const 声明的变量不可被修改
4、支持 块级作用域
5、由于const 声明的变量不可修改 所以const一般定义常量
let
1、let 不存在声明提升 和 变量覆盖问题,
2、支持 块级作用域