var 特点
1.变量提升、使用var声明得变量会提升到作用域前边
a未定义
console.log(a); //报错
a在console.log(a);之后定义,但是不报错,显示为undefined。原因即是变量提升,
var的声明为整个作用于都可以访问,就如在解析时的代码顺序为var a;console.log(a); a=1;。
console.log(a); //undefined
var a=1;
console.log(a); //undefined
var a=1;
console.log(a); //1
2.可以重复声明
var a=1;
console.log(a); //1
var a="hello"
console.log(a); //hello
let特点
:声明的变量只在 let 命令所在的代码块内有效,声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。
1.不能变量提升
console.log(a); //报错
let a=1;
2.不可以重复声明
let a=1;
console.log(a);
let a="hello"
console.log(a); //Uncaught SyntaxError: Identifier 'a' has already been declared
const特点
:声明一个只读的常量,一旦声明,常量的值就不能改变,定义常量的值不能通过再赋值修改,也不能再次声明。而 let 定义的变量值可以修改。
1.一般用来声明常量 常量的值不可修改,常量必须在声明得时候初始化
const PI=3.1415926 //3.1415926
const PI;
PI=3.14; // 报错Uncaught SyntaxError: Missing initializer in const declaration
2.不可重复声明
const a=1;
console.log(a);
const a="hello"
console.log(a); //报错Uncaught SyntaxError: Identifier 'a' has already been declared