# 解构赋值 ## 选择 1. 下面代码执行后 a,b,c的值分别是 ``` let [a, b, c] = [1, 2, 3]; ``` A.1,2,3 B.2,3,1 C.未定义 D.undefined undefined undefined 答案 A 解析 在解构中,有下面两部分参与: 解构的源,解构赋值表达式的右边部分。 解构的目标,解构赋值表达式的左边部分。 2. 下面代码执行后 a,b,c的值分别是 code ``` let [a, [[b], c]] = [4, [[5], 6]]; ``` A.4 [5] 6 B.[4, [[5], 6]] undefined undefined C.4,5,6 D. 4,[[5], 6] 答案 C 3. 下面代码执行后 a,b的值分别是 code ``` let [a, , b] = [1, 2, 3]; ``` A.1,2 B.1,3 C.2,3 D.1,3 答案 D 4. 下面代码执行后 a,b的值分别是 CODE ``` let [a = 1, b] = []; // a = 1, b = undefined ``` A.1 undefined B. 1 报错 C.[] D. undefined undefined 答案 A 5. 下面代码执行后 a b的值分别是 code ``` let [a, ...b] = [1, 2, 3]; ``` A. 1; 2,3 B. 1;[1,2,3] C.1,[2,3] D.1,[] 答案 C 6. 下面代码执行后 a,b,c,e,d的值分别是 code ``` let [a, b, c, d, e] = 'hello'; ``` A h,e,l,l,o B.h,e,l,o,l C. 所有的都是undefined D. 所有的都是空数组 答案 B 7. 下面代码执行后 a的值为 code ``` let [a = 2] = [undefined]; // a = 2 ``` A.2 B.undefined C.[] D.报错 答案 A 8. 下面代码执行后foo,bar 的值分别是 code ``` let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; ``` A. foo bar B.aaa,bbb C.foo bbb D.aaa bar 答案 B 9. 下面代码执行后foo 的值为 code ``` let { baz : foo } = { baz : 'ddd' }; ``` A. baz B.foo C.ddd D.undefiend 答案 C 10. 下面代码执行后X 的值为 code ``` let obj = {p: ['hello', {y: 'world'}] }; let {p: [x, { }] } = obj; ``` A.hello B.world C.p D.obj 答案 A 11. 下面代码执行后x,y 的值分别为 code ``` let obj = {p: [{y: 'world'}] }; let {p: [{ y }, x ] } = obj ``` A.undefined undefined B. obj world C. 报错 obj D.undefined world 答案 D 12. 下面代码执行后a,b,rest 的值分别为 code ``` let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}; ``` A. 10 20 30,40 B.10 20 [30,40] C. 10 20 [] D.undefined undefined [] 答案 B 13. 下面代码执行后aa,bb 的值分别为 code ``` let {a: aa = 10, b: bb = 5} = {a: 3}; ``` A. 3 5 B.10 5 C. 3 undefined D. 报错