es6之前,js中只有一个声明变量的关键字 var 。

es6之后,新增了let 和 cons两个关键字。

1、Let

(1)、let 是在代码块内有效,var 是在全局范围内有效。很适合for循环中的i变量。

{
  let a = 0;
  var b = 1;
}
a  // ReferenceError: a is not defined
b  // 1

  

(2)、不能重复声明,let声明的变量不可以重复声明,var可以。for循环可以使用let i。

 

(3)、let 不存在变量提升,var 会变量提升。也就是如果先使用了a,后let声明a,会报错,与未声明一样。使用未先声明的b,后通过var声明,不会报错,会显示undefined。

2、Const

const 声明一个只读变量,声明之后不允许改变。意味着,一旦声明必须初始化,否则会报错。

 

console.log(a);  //ReferenceError: a is not defined
let a = "apple";
 
console.log(b);  //undefined
var b = "banana";