关于对象的解构赋值的小疑惑?
来源: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); }
这个并不会报错啊,我直接在控制台打了出来
10
相似问题