请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于对象的解构赋值的小疑惑?

1.老师说对象的解构赋值等号的左右两边都是对象,为什么会有这种形式呢?不是很明白

{
    let {a=3,b=10} = {a:5};
    console.log(a,b);  // 5 10
}

{a=3,b=10}对象的话一般不都是{a:3,b:10} 为什么这里是=号呢?


2.这个地方({a,b}={a:1,b:2});

为什么一定要用括号()包起来了,不包的话就会报错

{
    let a, b;
    ({a,b}={a:1,b:2});
    console.log(a,b); // 1 2
}


这样写也是错的,为什么呢?

{
    let {a,b}={a:1,b:2};
    console.log(a,b);
}


麻烦老师解答一下,谢谢!

正在回答 回答被采纳积分+3

1回答

慕运维5828042 2017-05-01 17:38:30

第一问题,{a=3,b=4}={a:1,b:2}这个等号可以认为是ES6给对象属性默认赋值的一种写法。这个算是语法。

第二个问题,({a,b}={a:1,b:2});这个的话其实跟ES6解析有关系,ES6默认会将{ }这种当做一个代码块,而不是解析成走解构赋值。

{
    let {a,b}={a:1,b:2};
    console.log(a,b); 
}

这个并不会报错啊,我直接在控制台打了出来

https://img1.sycdn.imooc.com/szimg//5907020f00014ad506220222.jpg

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信