1. 什么是解构赋值?
结构赋值是ES6新增的一种赋值方式
2. 结构赋值的基本使用

let arr = [1, 3, 5];
        let [a, b, c] = arr;
        console.log("a = " + a);  //1
        console.log("b = " + b);  //3
        console.log("c = " + c);  //5

3. 在数组的解构赋值中, 等号左边的格式必须和等号右边的格式一模一样, 才能完全解构(完全解构就是一一对应的全部结构出来)

//右边是什么样子的格式,左边也必须是对应格式,才能完全解构
        let [a, b, [c, d]] = [1, 3, [2, 4]];
        console.log("a = " + a);    //1
        console.log("b = " + b);    //3
        console.log("c = " + c);    //2
        console.log("d = " + d);    //4

4. 在数组的解构赋值中, 左边的个数可以和右边的个数不一样(左边有多少个变量,那么就解构多少个)

let [a, b] = [1, 3, 5];
        console.log("a = " + a);   //1
        console.log("b = " + b);   //3

5. 在数组的解构赋值中, 右边的个数可以和左边的个数不一样(左边的变量如果没有被结构, 那么则会是undefined)

let [a, b, c] = [1];
        console.log("a = " + a);   //1
        console.log("b = " + b);   //undefined
        console.log("c = " + c);   //undefined

6. 在数组的解构赋值中,如果右边的个数和左边的个数不一样, 那么我们可以给左边指定默认值

let [a, b = 666, c = 888] = [1];
        console.log("a = " + a);    //1
        console.log("b = " + b);    //666
        console.log("c = " + c);    //888

7. 在数组的解构赋值中, 如果左边的个数和右边的个数不一样, 那么如果设置了默认值,那么默认值将会被覆盖

let [a, b = 666] = [1, 3, 5];
        console.log("a = " + a);        //1
        console.log("b = " + b);        //3

8. 在数组的解构赋值中, 还可以使用ES6中新增的扩展运算符来打包剩余的数据(ES6中新增的扩展运算符: …)

如果使用了扩展运算符来打包,那么打包的会转换为数组

 let [a, ...b] = [1, 3, 5];
        console.log("a = " + a);    //1
        console.log("b = " + b);    //[3.5]

9. 在数组的解构赋值中, 如果使用了扩展运算符, 那么扩展运算符只能写在最后

  //  ... 扩展运算符只能是最后一个变量添加, 而不能是最中间,或者前面
        let [a, ...b] = [1, 3, 5];
        console.log("a = " + a);   //1
        console.log(b);            //[3.5]