ES6之函数解构赋值

最近浏览博客看到一个 es6 函数解构赋值的例子 

function move({x = 0,y = 0} = { }){
    return [x,y];
 }
console.log(move({x : 3,y : 4})); //[3,4]
console.log(move({x : 3})); //[3,0]
console.log(move({})); //[0,0]
console.log(move()); //[0,0]

function move2({x,y} = {x : 1, y : 2 }){
    return [x,y];
}
console.log(move2({x : 6,y : 8})); //[6,8]
console.log(move2({})); //[undefined,undefined]
console.log(move2()); //[1,2]

一直没怎么看明白,原来博主解释也没怎么看懂 

ps: 原博客 https://blog.csdn.net/qq_36846234/article/details/78973402

下面来点通俗易懂的解释:

对于第一个函数

function move({x = 0,y = 0} = { }){
    return [x,y];
}
console.log(move({x : 3,y : 4})); //[3,4]
console.log(move({x : 3})); //[3,0]
console.log(move({})); //[0,0]
console.log(move()); //[0,0]

// 分析:
//1、先来看一下 {x = 0,y = 0} = { },只要调用 move 函数 没有传递参数的时候才会执行{x = 0,y = 0} = { } 这一行代码,只要传递了参数 这行代码是不会执行,所以前面两个输出就很好理解了
//2、接下来,第三个输出,传入的参数是一个空 {},是不执行 {x = 0,y = 0} = { }这行的输出[0,0]的原因是,es6 会解构传入的 空 {},发现并没有 X和Y 所以解构失败,使用了默认值
// 第四个输出:根本就没有传入参数,所以执行了 {x = 0,y = 0} = { },得到的结果是 [0, 0]

对于第二个函数:

function move2({x,y} = {x : 1, y : 2 }){
    return [x,y];
}
console.log(move2({x : 6,y : 8})); //[6,8]
console.log(move2({})); //[undefined,undefined]
console.log(move2()); //[1,2]

// 1、第一个输出,传入了{x : 6,y : 8}对象,es6会解构这个对象即:let {x,y} = {x:6, y:8},得到的是6,8
// 2、第二个输出,传入的一个空的 {},es6也是会解构这个对象即:let {x,y} = {},因为是空对象,所以会解构失败,使用默认值(并不会执行{x,y} = {x : 1, y : 2 },因为我们传入了参数,只不过这个参数是空{} ),默认值两个都是 underfined ,所以输出的 就是 [undefined,undefined]
// 3、第三个输出,咱们根本就没有传入任何参数,代码就会执行 {x,y} = {x : 1, y : 2 },解构之后的得到的就是 1,2 了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值