变量的解构赋值[一数组]

  • A+
所属分类:ES 6 JavaScript Web

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

一.数组的解构赋值

1.基本用法

  • 常规写法
    let a = 1;
    let b = function (count) {
      return count+1;
    };
    let c = new Date();
    
  • ES 6中可有如下写法,从数组中提取值,按照对应位置,对变量赋值。
    let [d, e, f] = [1, function (count) {
      return count+1;
    }, new Date()];
    

2.特点

  • ① 如果解构不成功,变量的值就等于undefined
    let [foo] = [];
    let [bar, foo] = [1];
    foo //undefined
    
  • ② 等号的右边不是数组(或者严格来说不是可遍历的结构)就会报错。
    // 报错
    let [foo] = 1;
    let [foo] = false;
    let [foo] = NaN;
    let [foo] = undefined;
    let [foo] = null;
    let [foo] = {};
    
  • ③ 对于 Set 结构,也可以使用数组的解构赋值
    let [x, y, z] = new Set(['a', 'b', 'c']);
    x // "a"
    
  • ④ 嵌套数组也可以赋值,只要=号两边模式相同即可。
    let [foo, [[bar], baz]] = [1, [[2], 3]];
    foo // 1
    bar // 2
    baz // 3
    
    let [ , , third] = ["foo", "bar", "baz"];
    third // "baz"
    
    let [x, , y] = [1, 2, 3];
    x // 1
    y // 3
    
    let [head, ...tail] = [1, 2, 3, 4];
    head // 1
    tail // [2, 3, 4]
    
    let [x, y, ...z] = ['a'];
    x // "a"
    y // undefined
    z // []
    
    //不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组
    let [x, y] = [1, 2, 3];
    x // 1
    y // 2
    
    let [a, [b], d] = [1, [2, 3], 4];
    a // 1
    b // 2
    d // 4
    

3.默认值

  • 解构赋值允许指定默认值
    let [foo = true] = [];
    foo // true
    
    let [x, y = 'b'] = ['a']; // x='a', y='b'
    let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
    
  • ES6 判断一个位置是否有值,使用严格相等运算符(===)。当一个数组成员严格等于undefined,默认值才会生效。
    let [x = 1] = [undefined];
    x // 1
    
    let [x = 1] = [null];
    x // null
    
zhangfeng

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: