zoukankan      html  css  js  c++  java
  • ES6 数组的解构赋值

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

    以前,为变量赋值,只能直接指定值。

    let a = 1;
    let b = 2;
    let c = 3;
    

    ES6 允许写成下面这样。

    let [a,b,c] = [1,2,3];
    console.log(a); // 1
    console.log(b); // 2
    console.log(c); // 3
    

    下面的同样会被解析

    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
    

    如果解构不成功,变量的值就等于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']);
    console.log(x) // "a"
    console.log(y) // "b"
    console.log(z) // "c"
    

    解构赋值允许指定默认值。

    var [foo = true] = [];
    console.log(foo) // true
    
    var [x, y = 'b'] = ['a']; // x='a', y='b'
    console.log(x);
    console.log(y);
    var [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
    console.log(x);
    console.log(y);
    
    var [x, y = 'b'] = ['a', 'c']; // x='a', y='c'
    console.log(x);
    console.log(y);
    

    注意,ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。

    var [x = 1] = [undefined];
    console.log(x) // 1
    
    var [x = 1] = [null];
    console.log(x) // null
    

    上面代码中,如果一个数组成员是null,默认值就不会生效,因为null不严格等于undefined。

    let [x = 1, y = x] = [];     // x=1; y=1
    let [x = 1, y = x] = [2];    // x=2; y=2
    let [x = 1, y = x] = [1, 2]; // x=1; y=2
    let [x = y, y = 1] = [];     // ReferenceError: y is not defined
    
  • 相关阅读:
    M3U8文件
    线程间的通信方式以及线程与进程的区别
    string类的实现
    进程间的通信方式
    GDB调试多线程
    面向对象与面向过程的优缺点
    同步与异步,阻塞与非阻塞的区别
    计算机cpu、寄存器、内存区别
    Linux下Makefile中动态链接库和静态链接库的生成与调用
    使用session来存储用户的登录信息
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/9226215.html
Copyright © 2011-2022 走看看