Es6-数组的解构赋值

74 阅读1分钟

一 什么是解构赋值

解析某一数据的结构,将我们想要的东西提取出来,赋值给变量或常量

二 解构赋值的原理

1.模式(结构)匹配

[]=[1,2,3]

2.索引值相同的完成赋值

const[a,b,c]=[1,2,3]

不取的,可以直接用逗号跳过

const [a,[,,b],c]=[1,[2,4,5],3]

三 解构赋值的默认值

1.默认值的基本用法

const [a, b] = [];// const [a,b]=[undefined,undefined]

2.默认值的生效条件

只有当一个数组成员严格等于(===)undefined时,对应的默认值才会生效

const [a=1,b=2]=[3,0]
const [a=1,b=2]=[3,null]
const [a=1,b=2]=[3]
console.log(a,b);

3.默认值表达式

如果默认值是表达式,默认值表达式是惰性求值的

const func=()=>{
        console.log("我被执行了");
        return 2;
    }// const [x=func()]=[1]
const [x=func()]=[];
console.log(x);

四 解构赋值的应用

1.常见的类型组的解构赋值

arguments

function func(){
    console.log(arguments);
    // console.log(arguments.push);
    const [a,b]=arguments;
    console.log(a,b);
}
func()
func(1,2)
NodeList
console.log(document.querySelectorAll("p"));
const [p1,p2,p3]=document.querySelectorAll("p")
console.log(p1,p2,p3);

2.函数参数的解构赋值

const array=[1,1]
const add=arr=>arr[0]+arr[1]
console.log(add(array));
const add=([x,y])=>x+y;
const add=([x=0,y=0])=>x+y;
console.log(add([1,2]));

3.交换变量的值

let x=1;
let y=2;
// let tmp=x
// x=y
// y=tmp
// console.log(x,y);
[x,y]=[y,x]
[x,y]=[2,1]
console.log(x,y);