ES6常用解构赋值有哪几种?
a.数组的解构赋值
{
let [a, b, c] = [1, 2, 3];
console.log("模式匹配");
console.log(a);
console.log(b);
console.log(c);
}
{
let [a, [b, c]] = [1, [2, 3]];
console.log("嵌套数组赋值");
console.log(a);
console.log(b);
console.log(c);
}
{
let [a,b,c]=[1,2];
console.log("不完全解析");
console.log(a);
console.log(b);
console.log(c);
}
{
let [a,[b],c]=[1,[1,2],3];
console.log("不完全解析2");
console.log(a);
console.log(b);
console.log(c);
}
{
let [a,...b]=[1,2,3];
console.log("剩余运算符");
console.log(a);
console.log(b);
}
{
let {a =10 ,b=5}={a:3}
console.log("默认值解析");
console.log(a);
console.log(b);
}
b.对象的解构赋值
{
console.log("解析嵌套对象");
let obj={
p:["hello",{y:"world"}]
}
let {p:[x,{y}]}=obj;
console.log(x);
console.log(y);
}
{
console.log("可忽略");
let obj={p:["hello",{y:"word"},'ECMSScript']}
let {p:[x,{y}]}=obj;
console.log(x);
console.log(y);
}
{
console.log("不完全解析");
let obj={p:[{y:'world'},'hello']}
let {p:[{y},x,z]}=obj;
console.log(x);
console.log(y);
console.log(z);
}
{
let {x,y,...rest}={x:10,y:20,z:30,xx:11,yy:22,zz:33}
console.log("剩余解析");
console.log(x);
console.log(y);
console.log(rest);
}
{
console.log("默认值解析");
let{a=10,b=20}={a:100};
console.log(a);
console.log(b);
let{c:cc=15,d:dd=30}={c:130}
console.log(cc);
console.log(dd);
}
c.字符串的解构赋值
const [a, b, c] = 'yes';
console.log(a)
console.log(b)
console.log(c)
let {length : len} = 'yes';
d.数值和布尔值的解构赋值
let {toString: s} = 123;
s === Number.prototype.toString
let {toString: s} = true;
s === Boolean.prototype.toString
e.函数参数的解构赋值
console.log("参数解析");
(function add([x,y]){
console.log(x + y);
})([1,2]);
function move({x = 0, y = 0} = {}) {
console.log([x, y]);
}
move({x: 3, y: 8});
move({x: 3});
move({});
move();
2.
function move({x, y} = { x: 0, y: 0 }) {
console.log([x, y]);
}
move({x: 3, y: 8});
move({x: 3});
move({});
move();