1.var
-支持全局、函数作用域
-接受重复声明
-变量预解析
// 作用域
var aa=1;
function fn(){
var aa=10;
console.log(aa);
}
fn();// 输出的是10
console.log(aa); // 输出的是1
console.log(aa); // undefined,变量预解析
var aa=1;
2.let
-不接受重复声明
-不存在变量提升
-支持块作用域(es6新提出的概念)
console.log(aa); // 报错,没有变量预解析
let aa=1;
let aa=1;
let aa=10; // 报错,aa已经被声明过了
3.const
-特性同let
-用来声明常量,一旦声明不能更改
console.log(aa); // 报错,没有变量预解析
const aa=1;
const aa=1;
const aa=10; // 报错,aa已经被声明过了