解构 Destructuring
- 解构允许你使用模式匹配绑定变量,这适用于数组和对象。
- 解构如果失败 和 对象使用 foo['bar']查找的结果很相似,如果找不到,值是undefined 还可以设置默认值
- 所谓模式匹配,就是 解构要长的相似
数组匹配
var [a, b] = [1, 2, 3]
console.log(a, b);// 1 2
// 比如二位数组 可以方便的拿到对应的值
let list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
var [[a], [b], [c]] = list;//我这里换成了var 是因为 上面已经使用了ab用let会报错 使用var声明覆盖了上面的变量
console.log(a, b, c);//1 4 7
对象匹配
var obj = {
name: "xiaoming",
borther: {
sisiter: 'Aima'
},
cheers: 'yijiaren'
}
var { name: d, borther: { sisiter: e }, cheers: f } = obj
console.log(d, e, f);//xiaoming Aima yijiaren
var { name,borther,cheers } = obj;
console.log(name,borther,cheers);//xiaoming { sisiter: 'Aima' } yijiaren
作为参数参数使用
function sayHello({name:x}) {
console.log(`hello , nice to see you ${x}`);
}
sayHello({name:'xiaohong'});//hello , nice to see you xiaohong
默认值设置
- 如果未取到值 使用undefined
- 可以设置默认值替代undefined
var [a] = [];
console.log(a);//undefined
// 如果没有获取值 给一个默认值
var [a = 1] = [];
console.log(a);//1
解构和默认参数
function r({x,y,w=10,h=10}) {
console.log (x + y + w + h);
}
r({x:1,y:2});//23