ES6——解构赋值

数组类型


左右各一个数组

let a,b;
[a,b] = [1,2];
console.log(a,b);  // 1, 2


数值赋值给变量(rest)

let a,b,rest;

[a,b,...rest] = [1,2,3,4,5,6];

console.log(a,b,rest);  // 1, 2, [3,4,5,6]


数组嵌套

var [a,[b,c]] = [1,[2,3]];

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


指定默认值

var [a,b,c,d = 4] = [1,2,3];

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



使用场景


变量交换

let a = 1;
let b = 2;

[a,b] = [b,a];
console.log(a,b);   // 2, 1


返回值赋给变量

function f(){
    return [1,2];
}

let a,b;
[a,b] = f();
console.log(a,b);  // 1, 2


只选择需要的返回值

function f(){
    return [1,2,3,4,5];
}

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



对象类型


左右各一个对象

let o = {a: 1, b: 2};

let {a,b} = o;

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


默认值


后面的a覆盖了前面的a

let {a = 1 , b = 2} = {a : 3};

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


获取json数据的值

{
    let manInfo = {
            name: 'Tim Chen',
            more: [{
                age: '23',
                sex: 'male',
            }]          
    }

    let {name:myName, more:[{age:myAge}]} =  manInfo;

    console.log(myName,myAge); // Tim Chen , 23
}



对象方法类型


把对象赋给一些特殊对象,即相当于使用对象的方法

let {floor,ceil} = Math;

let a = 1.9;

console.log(floor(a));



字符串类型


获取字符串长度

let {length} = 'Hello';

console.log({length});  // {length:5}


解构字符串

let [a,b,...c] = 'Hello';

console.log(a,b,c);  // H e ["l", "l", "o"]



函数类型


解构函数参数

var arr = [1,2];

function test([a,b]){
    console.log("a:", a);
    console.log("b:", b);
}

console.log(test(arr));  // a: 1   b: 2



不区分参数顺序

注意:这里的参数是对象不是数组!!!

var obj = {b:2, a:1};

function test({a,b}){
    console.log("a:", a);
    console.log("b:", b);
}

console.log(test(obj));  // a: 1   b: 2




参数默认值
var obj = {b:2};
function test({a = 10, b}){...}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值