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

来源:3-2 解构赋值

kumayato

2017-05-01

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);
}


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

写回答

1回答

慕运维5828042

2017-05-01

第一问题,{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); 
}

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

//szimg.mukewang.com/5907020f00014ad506220222.jpg

1
0

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程