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