ES6-アレイの破棄と割り当て

ES6-アレイの破棄と割り当て


  1. ES6の非構造化の定義により、特定のパターンに従って配列とオブジェクトから値を抽出し、変数に値を割り当てることができます。
    以前は、変数に値を割り当てることは、直接指定することしかできませんでした。たとえば、次のようになります。
		let a=1;
		let b=2;
		let c=3;

ES6では破壊的割り当てが導入されたため、変数は次のように定義できます。

        let [d, e, f] = [4, 5, 6];
        console.log(d, e, f); //4 5 6
        console.log([d, e, f]); //[4,5,6]

上記のコードは、配列から値を抽出し、対応する位置に従って変数に値を割り当てます。本質的に、このタイプの書き込みはパターンマッチングに属します。等号の両側のパターンが、同様に、左側の変数には対応する値が割り当てられます。

  1. 配列の非構造化の割り当てはネストできます。非構造化が失敗した場合、変数の値はundefinedを返します。
        let [x, [y, z]] = [1, [2, 3]];
        console.log(x, y, z); //1 2 3
        let [, , third] = ['a', 'b', 'c'];
        console.log(third); //'c'
        let [head, ...tail] = [1, 2, 3, 4, 5];
        console.log(head, tail); //1 [2,3,4,5]
        let [m, n, ...o] = ['a'];
        console.log(m); //'a'
        console.log(n); //undefined
        console.log(o); //[]
  1. 不完全な分解等号
    の左側のパターンは、等号の右側の配列の一部にのみ一致します。この場合でも、分解は成功する可能性があります。
        let [g, h] = [1, 2, 3];
        console.log(g); //1
        console.log(h); //2
        console.log([g, h]); //[1,2]
  1. 割り当てを破棄すると、デフォルト値を指定できます
        let [foo = true] = [];
        console.log(foo); //true
        let [x1, y1 = 'b'] = ['a', undefined];
        console.log(x1); //'a'
        console.log(y1); //'b'
  1. ES6は、内部的に厳密な等式演算子 '==='を使用して、位置に値があるかどうかを判別します。したがって、配列メンバーがundefinedと厳密に等しくない場合、デフォルト値は有効になりません。
        let [x2 = 1] = [undefined];
        console.log(x2); //1
        let [x3 = 1] = [null];
        console.log(x3); //null
  1. デフォルト値が式の場合、式は遅延評価されます。つまり、使用された場合にのみ評価されます。
        function fn() {
            console.log('aaa');
        }
        let [x4 = fn()] = [1];
        console.log(x4); //1(x4能取到值,所以函数fn()根本不会执行)
        /* 以上代码等价于 */
        // let x4;
        // if (([1][0]) === undefined) {
        //     x4 = fn();
        // } else {
        //     x4 = [1][0];
        // }
        // console.log(x4);//1

おすすめ

転載: blog.csdn.net/Angela_Connie/article/details/110909049