一.变量的解构赋值

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

    解构的作用是可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者 obj[key]等传统方式进行赋值

    1.数组的解构赋值

    常规方法:

    // let arr = [1, 2, 3, 4, 5];

    // let a = arr[0];

    // let b = arr[1];

    // let c = arr[2];

    // let d = arr[3];

    // let e = arr[4];

    // console.log(a, b, c, d, e); //1 2 3 4 5

    解构实现:

    // let arr = [1, 2, 3, 4, 5];

    // let [a, b, c, d, e] = arr;

    // console.log(a, b, c, d, e); //1 2 3 4 5

    换一种写法,而且左右不匹配不影响输出,不会产生错误。如果要赋值的变量比数组项少,则按照顺序赋值;如果要赋值的的变量大于数组项,那么多出来的变量相当于未被赋值。

    // let [a, b, c, d, e] = [1, 2, 3, 4, 5];

    // console.log(a, b, c, d, e); //1 2 3 4 5

    // let [a1, b1, c1, d1, e1] = [1, 2, 3, 4];

    // console.log(a1, b1, c1, d1, e1); //1 2 3 4 undefined

    // let [a2, b2, c2] = [1, 2, 3, 4];

    // console.log(a2, b2, c2); //1 2 3

    // let [a, b, [c, d, [e, f, [g, h, [i, j]]]]] = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]

    // console.log(a, b, c, d, e, f, g, h, i, j); //1 2 3 4 5 6 7 8 9 10

    2.对象的解构赋值 - 重点

    对象是无序的,解构变得重要,而且跟后面学的模块化有关系。

    解构的变量名必须和属性名相同,但是也可以修改

    // const obj = {

    // a: 1,

    // b: 2,

    // c: 3

    // };

    // let {

    // c,

    // a,

    // b

    // } = obj;

    // console.log(a, b, c);//1, 2, 3

    // const obj = {

    // xingming: ‘zhangsan’,

    // age: 18,

    // sex: ‘男’

    // };

    // let {

    // age

    // } = obj;

    // console.log(age);//18

    修改名称,如果要修改名称,需要在原对象key键后面加上冒号,再将要赋值的变量名写在冒号后面,多个变量之间用逗号隔开

    // let {

    // xingming: username

    // } = obj;

    // console.log(username); //zhangsan

    // console.log(xingming); //没有值,报错

    3.对象配置函数进行解构操作

    // function fn({ name,age,sex} = { name: ‘wangwu’,age: 20, sex: ‘女’ }) {

    // console.log(‘我的名字叫’ + name + ‘,我今年’ + age + ‘岁,我是’ + sex + ‘的’);

    // }

    // 调用时如果没有传入实参,使用解构后面的默认参数,如果传入实参,使用传入的参数。

    // fn({

    // name: ‘zhangsan’,

    // age: 18,

    // sex: ‘男’

    // });