数组解构
第一题
function getNum (){
return 6;
}
let [a = getNum()] = [,]; //a=?
第二题
var [x = 1,y=x] = [undefined,2];
//x =? y = ?
console.log(x,y);
var [x = 1,y=x] = [null,2];
//x =? y = ?
console.log(x,y);
第三题
let [a,[b = 2,[c,d]],e] = [1,[undefined,[,4]],5];
//a= ? b= ? c=? d=? e=?
参考答案:
1、 a = 6 设置默认值也可以是函数,但是只在使用时才会计算值
2、 x=1 y=2 x =null y=2 当遇到 undifined是默认值生效 null === undifined 这两个值严格比较是等于false所以第二个 声明默认值不生效,x值为null
3.、 // a=1
// b=2
// c=undefined
//d=4
//e=6
对象解构
第一题
let {a,b} = {a:'a',b:'b'}
// a= ? b = ?
第二题
let {name,age} = {name:'zhangsan'}
// name =? b=?
第三题
let {floor} = Math;
console.log(floor(4.7));
//输入什么?
第四题
let {person:p,age:a} = {person:'zhangsan',age:18}
// p =? a=?
第五题
let {user:[person,{age}]} = {user:['zhangsan',{age:18}]};
//person = ? age=?
第六题
let obj = {
userName: {
name:'zhangsan'
},
introduce:{
habies:['football','basketball'],
talent:['guitar']
},
age:18,
job:'programmer',
num:14
}
let {userName:{name},introduce:{habies:[,b]},age:num} = obj;
//name = ?
// b=?
//age = ?
//这里掌握了 说明对象解构掌握得还不错
第七题
let arr= [
{
name:'user1',
age:18,
},
{
name:'user2',
age:14,
},
{
name:'user3',
age:30,
},
{
name:undefined,
age:28,
}
]
let {0:{age:age0},2:{name:name2},3:{name = 'zhangsan'}} = arr;
console.log(age0); // 18
console.log(name2); //user3
console.log(name); //zhangsan
- a b
- zhangsan undefined
- 4
- p = ‘zhangsan’ a= 18 这里如果引用person报错 person是匹配模式而不是变量
- person = ‘zhangsan’ age=18
- name = ‘zhangsan’ b=basketball age ReferenceError: age is not defined
字符串解构
第一题
let [a,b,c,d,e] = 'hello';
console.log(a,b,c,d,e); // a =? b=? c=? d=? e=?
第二题
let str = 'hello world'
let {length:len} = str;
第三题
let str = 'hello world'
let {foo:[a,b]} = {foo:str}
console.log(a,b); // a=? b=?
第四题
let str = 'hello world'
let {foo:[a,b,length]} = {foo:str}
console.log(a,b,length); //a=h b=e length=?
- h e l l o
- 11
- h e
- undefined 因为此时解构字符串时length需要另外解
函数解构
第一题
function add([a,b,c]) {
console.log(a+b+c); //?
}
add([1,2,3]);
第二题
function add({x=1,y=3}) {
console.log(x+y); //输出?
}
add({x:5});
第三题
let arr = [
[1,2],
[1,undefined],
[undefined,2]
];
function add([a =3,b =4]) {
let sum = a+b;
console.log(sum); //三次循环输入什么?
}
arr.map(item => {add(item)})
- 6
- 8
- 3 5 5