ES6-变量
声明变量
首先我们来回顾一下 es6 之前声明变量的方法:通常情况下,在 JavaScript 中,我们只有一种声明变量的关键字--var,我们使用 var 声明变量,使用 = 给变量赋值。在es6中我们可以使用新增的关键字let和const声明变量:let声明变量的方法和var一致,均可先声明再赋值,或直接声明并赋值;const声明变量时,不可先声明再赋值,必须直接声明并赋值,否则会报错,并且const声明的变量一旦生产声明过后,就不可再更改,我们可以理解一般用const声明常量;
var str; //声明变量
str = 'Learning'; //变量赋值
var str2 = 'Learning'; //直接声明并赋值
let str; //声明变量
str = 'Learning'; //变量赋值
let str2 = 'Learning'; //直接声明并赋值
const str; //报错Uncaught SyntaxError: Missing initializer in const declaration
const str3 = 'Learning';//直接声明并赋值
作用于块作用域
除此之外,let和const的作用域与var不同,let和const声明的变量只能在当前的块作用域内访问到;
{
let a = 10;
var b = 1;
}
a // 报错ReferenceError: a is not defined.
b // 1
不可 以变量提升
var可以变量提升,即在声明变量之前使用,值为undefined;let、const不可以变量提升,在声明变量之前使用会报错;
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;