• 【ES6 】ES6 解构赋值--数组解构赋值


    定义

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

    数组的解构赋值

    • 以前,为变量赋值,只能直接指定值。
      let a = 1;
      let b = 2;
      let c = 3;
    • es6写法

      let [a, b, c] = [1, 2, 3];
    • 不完全解构--解构不成功,值都会等于undefined

      let [x, y, ...z] = ['a'];
      x // "a"
      y // undefined
      z // []
      
      
      
      let [bar, foo] = [1];
      
      foo   //undefined
      
      
      
      let [foo] = [];
      
      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" 

    数组解构赋值允许默认值

    • ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。
      //默认值生效了
      let [foo = true] = [];
      foo // true
      
      let [x, y = 'b'] = ['a']; // x='a', y='b'
      let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
      
      let [x = 1] = [undefined]; //x=1
      
      //默认值没有生效
      let [x = 1] = [null];
      x // null
    • 默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值

      function f() {
        console.log('aaa');
      }
      
      let [x = f()] = [1]; //x=1
    • 默认值可以引用解构赋值的其他变量,但该变量必须已经声明。

      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
        
  • 相关阅读:
    阅读笔记09
    阅读笔记08
    阅读笔记07
    阅读笔记06
    阅读笔记05
    有关eclipse连接SQL Server 2008的问题
    每周进度条05
    软件需求模式阅读笔记04
    每周进度条04
    软件需求模式阅读笔记03
  • 原文地址:https://www.cnblogs.com/websmile/p/11528108.html
Copyright © 2020-2023  润新知