ES6入门 - let和const命令

73 阅读1分钟

let和const命令

let 命令:ES6新增let命令,为JavaScript新增了块级作用域,用法类似于var,特点如下:

  • 声明的变量只在let命令所在的代码块内有效
{ let a = 10; var b = 1; }
a // ReferenceError: a is not defined
b // 1
  • 不存在变量提升,声明变量一定在声明后使用,否则报错
  • 暂时性死区 (temporal dead zone) : 本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
  • 不允许重新声明
var tmp = 123;
if(true){
    tmp='abc';  // ReferenceError
    let tmp;
}

const命令:声明一个只读的常量,一旦声明,必须立即初始化,且常量值不可变。只在声明所在的块级作用域内有效。

变量的解构赋值

用途:

  1. 交换变量的值
  2. 从函数返回多个值
  3. 函数参数的定义
  4. 提取JSON数据
数组的解构赋值

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。 解构赋值允许指定默认值, 若数组成员为null, 默认值不生效

let [a, b, c] = [1, 2, 3];

let [ , , third] = ["foo", "bar", "baz"];  // third = "baz"

let [head, ...tail] = [1, 2, 3, 4];    // head = 1; tail = [2, 3, 4]

let [x, y = 1] = [1]  // a = 1; b = 1

对象的解构赋值

对象的解构和数组有一个最大的不同,对象的属性没有次序,变量必须于属性同名才能取到正确的值。

let {car, foo} = {foo : 'aaa', bar : 'bbb'};  // foo = "aaa"; bar = "bbb"