1、let的引入

ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

2、基本用法

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

上面代码在代码块之中,分别用letvar声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

我们在使用for循环的计数器时,就很适合使用let命令,如下:

for (let i = 0; i < 10; i++) {
  // ...
}
console.log(i);
// ReferenceError: i is not defined

上面代码中,计数器i只在 for循环体内有效,在循环体外引用就会报错。如果使用 var,最后输出的是10。

3、不存在变量提升

var命令会存在“变量提升”现象,即变量可以在声明之前使用,值为undefined。这种现象会让人觉得很奇怪,按照一般的逻辑,变量应该在声明语句之后才可以使用。

那么为了纠正(避免)这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则会报错。

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐