ES6中变量的解构赋值

ES6中变量的解构赋值
1 数组的解构赋值
2 对象的解构赋值
3 字符串的解构赋值
4 数值和布尔值的解构赋值(先转为对象)
5 函数参数的解构赋值

不能使用圆括号
1 变量声明语句
2 函数参数
3 赋值语句的模式

可以使用圆括号
只有一种情况就是赋值语句是非模式

用途
(1)交换变量的值
(2)从函数返回多个值
(3)函数参数的定义
(4)提取 JSON 数据
(5)函数参数的默认值
(6)遍历 Map 结构

// 获取键名
for (let [key] of map) {
  // ...
}

// 获取键值
for (let [,value] of map) {
  // ...
}

(7)输入模块的指定方法

const { SourceMapConsumer, SourceNode } = require("source-map");

数组的解构赋值

//数组的解构赋值
             let [a,b,c] = [1,2,3]; //左右两边结构必须保持一致
             console.log(a,b,c); //1 2 3
             let [a,[b,c],d] = [1,[2,3],4];
             console.log(a,b,c,d); //1 2 3 4
        
        //如果左右两边结构不一致,解构不成功就会报undefined
             let [a,b,c] = [1,2];
             console.log(a,b,c) //1 2 undefined
        //如果等号右边不是数组,那么就会报错
             let [a] = 1;
             let [a] = false;
             let [a] = NaN;
             let [a] = {};
             let [a] = null;
             let [a] = undefined;
             上面这几种都是等号右边不是数组,都会报错(Uncaught TypeError: 上面等号右边的值 is not iterable)
        //允许有默认值
             let [a = 1] = [];
             console.log(a);  //1
             let [a=1,b] = ['ok','yes'];
             console.log(a,b); //ok yes

对象的解构赋值

 //对象的解构赋值
            let {a,b} = {a:'haha',b:'hhh'};
            console.log(a); //haha
            console.log(b); //hhh
            let obj = {
                a:'你好',
                b:{
                    c:'好啊',
                    d:'很好'
                }
            };
            let {a,b,b:{c,d}} = obj;
            console.log(a); //你好
            console.log(b); //Object{c: "好啊", d: "很好"}
            console.log(c); //好啊
            console.log(d); //很好
        
        //允许指定默认值
            let {a=1} = {};
            console.log(a); //1
            let {a,b=1} = {a:2};
            console.log(a); //2
            console.log(b); //1

字符串解构赋值

//字符串解构赋值
            let [a,b,c,d,e] = 'hello';
            console.log(a); //h
            console.log(b); //e
            console.log(c); //l
            console.log(d); //l
            console.log(e); //o
        //此时字符串被转换成了一个类似数组的对象

函数参数解构赋值

//函数参数解构赋值
            function got({a=0,b=0} = {}){
                return [a,b];
            }
            console.log(got({a: 1,b: 2})); //[1, 2]
            console.log(got({a: 1})); //[1, 0]
            console.log(got()); //[0, 0]
            //上面代码中,函数got的参数是一个对象,通过对这个对象进行解构,得到变量a和b的值。如果解构失败,a和b等于默认值。
    
            function got({a,b} = {a: 0,b: 0}){
                return [a,b];
            }
            console.log(got({a: 1,b: 2})); //[1, 2]
            console.log(got({a: 1})); //[1, undefined]
            console.log(got()); //[0, 0]
            //上面代码是为函数got的参数指定默认值,而不是为变量a和b指定默认值,所以会得到与前一种写法不同的结果。
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值