数组中的解构赋值

// 用逗号进行占位
var [a,,,,,,,c]=[1,2,3,4,5,6,7,8];
console.log(a,c);

// 结构左右一一对应
var [,[,a]]=[1,[2,3],4];
console.log(a);

//如果右边没有对应的值那项,获取的时候就是undefined
var [a,b,c]=[1,2];
console.log(c); //undefined

// 默认值:如果那个值绝对等于undefined,那就走默认值
var [a,b,c=10]=[1,2,undefined];
console.log(c);

对象中的解构赋值

// 对象的解构赋值跟属性名有关(跟顺序是无关的)
let {age,name}={name:"li",age:10};
console.log(name,age);

// 如果没有对应的项 值就是undefined
let {age,name}={name:"li"};
console.log(name,age);

// 用等号可以设置默认值,只要是绝对等于undefined 就走默认值
let {age=100,name}={name:"li",age:"200"};
console.log(name,age);

//可以起别名
let {age:a,name}={name:"li",age:10};
console.log(a);

函数参数的解构赋值

function fn (x,y){
   console.log(a);
}
var ary=[1,2];
var a=ary[0];
var b=ary[1];
fn(a,b)

function fn ([x,y]){
   console.log(x,y)
 }
 var ary=[1,2];
 fn(ary)

// 设置参数的默认值
function fn (x=20,y=10){

    console.log(x,y)
} 
fn()

function fn ({age:a}){

    console.log(a)
}
  
fn({name:"li",age:10})

ES剩余运算符

// 剩余运算符:把剩余的项装到一个数组中
function fn(x,y,...arg){
   console.log(arg);
}

var obj={name:"li"};
var obj2={age:10,"name":"da"};
var item={...obj,...obj2};

Q.E.D.


学而不厌 不耻下问