es6:解构赋值

数组解构赋值

注意点

  • 必须有初始化的值
  • 可以在解构中忽略一些项
  • 互换变量
  • 解构赋值表达式的值是表达式右边的值
//数组的解构辅助
        var arr = [1, 3, 4];
        let [a, b, c] = arr;
        console.log('a='+a,'b='+b,'c='+c);
        
        // 必须有初始化值
        // let [d,e,f];//错误

        // 可以忽略一些项
        const [,g,] = arr;
        console.log('g='+g); 

        // 互换变量
        let x = 1;
        let y = 2;
        let temp = x;
        x = y;
        y = temp;
        console.log(x,y);

        //结构赋值互换变量
        [y,x] = [x,y];//不在需要用 let const 申明了
        console.log(x,y);
    </script>

解构赋值中的默认值

在结构赋值中 赋值变量左边严格等于undefined的时候(即 ===)可以采用默认值

// 默认值
        let [x,y] = [];//空数组为undefined
        console.log(x,y);//都是undefined
        // 当在解构赋值中 赋值的变量(左边的变量)严格等于undefined时候(即 ===)采用默认值
        let [a = 10, b = 20] = [];
        console.log(a,b);//10与20
        let [c = 1, d = 2] = [null];
        console.log('c='+c, 'd='+d);//c等于null

es6小技巧

 //es6小技巧
        let name = 'cc';
        let obj = {
            name : name
        }
        console.log(obj);
        // 但属性名与属性值相等的情况下可以简写
        let obj1 = {
            name,
            age : 10
        }
        console.log(obj1);

对象的结构赋值

注意点

  • 必须初始化
  • 在赋值的时候使用解构赋值
  • 解构赋值表达式的值是表达式右侧的值
//对象结构赋值
        let {name : name, age : age} = {name : 'cc', age : 10};//声明变量name age 并进行解构赋值,一同进行
        console.log(name,age);// cc 10
        let {name : name1, age : age1} = {name : 'cc', age : 10};//声明变量name1 age1 并进行解构赋值,一同进行
        console.log(name1, age1);// cc 10
        let {name2 : name3, age2 : age3} = {name : 'cc', age : 10};
        console.log(name3,age3);//undefided undefided
        // 对象解构赋值中 等会左边对象的键值对中 冒号左边的属性名 是用来匹配等号右边对象的属性值得 要进行赋值必须右边对象的属性名保持一样,不然的化匹配不到
// 注意点
        // 在赋值的时候使用解构赋值
        let name, age;
        //{name : name, age : age} = {name : 'cc', age : 10};//编辑器报错 因为 js引擎 将 {} 识别成一个代码块了 2个代码块用等号报错
        // 解决方法
        ({name : name, age : age} = {name : 'cc', age : 10});//告诉 js引擎 这是一个表达式
        console.log(name, age);

        // 解构赋值表达式的值是表达式右边的值
        console.log({name : name, age : age} = {name : 'cc', age : 10});//解构赋值表达式的值是表达式右边的值
        let a,b,c;
        let arr = [];
        console.log([a = 2,b = 3,c = 5] = arr);//[] 空数组 解构赋值表达式的值是表达式右边的值
        console.log(a,b,c);

解构赋值表达式的值是表达式右侧的值的用处

 // 有何意义 使用实例
        function fn(value){
            console.log(value);
        }
        function fn1(value){
           /*  var name = obj.name;
            var age = obj.age; 以前的用法*/
            console.log(name,age);
        }
        let obj = {
            name : 'cc',
            age : 1
        }
        fn(obj);
        fn( {} = obj);
        fn({name,age} = obj);
        fn1({name,age} = obj);//在传入的时候可以调用变量 而不要再去取对象中的值

对象结构赋值的默认值(与数组相同)

// 默认值
        let obj = {};
        console.log(obj.a);//undefined
        let {name,age} = {};
        console.log(name,age);//undefined
        let {name1 = 'cc', age1 = 10} = {}
        console.log(name1,age1);
        let {name2 = 'tt', age2 = 23} = {name2 : 'liuluwei', age2 : 22};
        console.log(name2, age2);

数组与对象的混合使用

注意模式匹配

// 混合使用 模式匹配
        // let [a,b,[c,d]] = [1,2,3];//模式不匹配报错
        let [a,b,[c,d]] = [1,3,[]];//模式匹配
        console.log(a,b,c,d);
        let {age : [x,y,z]} = {age : [2,5,6]};
        console.log(x,y,z);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值