zoukankan      html  css  js  c++  java
  • 变量的解构赋值(数组)

    阮一峰ES6入门

    数组的解构赋值

    基本用法

    let [a,b,c] = [1,2,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
    
    let [head, ...tail] = [1, 2, 3, 4];
    head // 1
    tail // [2, 3, 4]
    
    let [x, y, ...z] = ['a'];
    x // "a"
    y // undefined
    z // []
    

    如果解构不成功,变量的值就等于undefined

    let [foo] = [];
    let [bar, foo] = [1];
    
    //这两种情况foo的值都会等于undefined
    

    不完全解构

    let [x, y] = [1, 2, 3];
    x // 1
    y // 2
    
    let [a, [b], d] = [1, [2, 3], 4];
    a // 1
    b // 2
    d // 4
    

    如果等号的右边不是数组(或者严格地说,不是可遍历的结构,参见《Iterator》一章),那么将会报错。

    // 报错
    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 = true] = [];
    foo // true
    
    let [x, y = 'b'] = ['a']; // x='a', y='b'
    let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
    
    只有当一个数组成员严格等于undefined,默认值才会生效
    let [x = 1] = [undefined];
    x // 1
    
    let [x = 1] = [null];
    x // null
    
    默认值可以引用解构赋值的其他变量,但该变量必须已经声明。
    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
    
  • 相关阅读:
    我就这么点时间,我该做些什么?
    如何排解压力
    渡过难关
    获得财富前,先问一下自己创造了什么
    程序员娶妻之道
    20150929雨
    我是小号
    tensorflow 源码编译tensorflow 1.1.0到 tensorflow 2.0,ver:1.1.0rc1、1.4.0rc1、1.14.0-rc1、2.0.0b1
    python大文件读取
    1《数学之美》第3章 统计语言模型
  • 原文地址:https://www.cnblogs.com/loveyt/p/9556181.html
Copyright © 2011-2022 走看看