简介
解构赋值语法是一种 Javascript 表达式。通过解构赋值,可以将属性/值从对象/数组中取出,赋值给其他变量
用法
1.数组的解构
数组的解构赋值时按顺序赋值的
//普通情况
let [a,b,c] = [1,2,3];//a=1,b=2,c=3
//允许数组嵌套
let[a,[b,c]]=[1,[2,3]];// a=1,b=2,c=3
//允许空缺值
let[ , ,c] = [1,2,3];//a=1,b=2,c=3
//不完全解构
let[a,c]=[1,2,3]; //a=1,b=2
//扩展运算符+解构赋值
let [head,...tail]=[1,2,3,4];
//默认值
let [a=1] = [];//a=1
let [b=2] = [3]; //b=3
2.对象的解构赋值
对象的解构赋值与数组的解构赋值类似,但不同的是对象的解构赋值是按照属性名赋值的,与数组解构赋值不同,与对象内属性的顺序无关
//普通情况
let {a,b} = {a:1,b:2};//a=1,b=2
let {a,b} = {b:2,a:1};//a=1,b=2;
//如果对象中没有对应的属性
let {a,b} = {a:1};//a=1,b=undefined
//对象的解构赋值支持修改变量名
let {a:value,b} = {a:1,b:2}; //value=1,b=2
//解构赋值要求等号右边是一个对象,如果是undefined或者null,会报错,
let {a} = null; // x
let {b} = undefined; //x
3.字符串的解构赋值
let [a,b,c,d,e] = 'hello';//a='h',b='e',c='l',d='l',e='o'
let {length} = 'hello';//length=5
4.函数参数解构赋值
//使用对象方式的默认值
function fn({a=1,b=2}){
}
//使用数组方式的默认值
function fn([a=1,b=2]){
}
用途
1.交换变量
let x = 1;
let y = 2;
[x,y]=[y,x]; //x=2,y=1
2.提取JSON数据
let jsonObj = {
id :1,
status:'OK',
data:[1001,1002]
}
let {id,status,data} = jsonObj;//id=1,status='OK',data==[1001,1002]
3.require模块时
const {Xxx,Yyy} = require("ZZZ");