1. 배열 할당 해체
간단한 사용
{
// 旧
let a=1,b=3;
//新
let [a,b]=[1,3];
console.log(a,b);// 1 3
}
만큼 등호의 양쪽에 동일한 패턴으로, 왼쪽의 변수는 대응하는 값을 설명한다.
{
let a,b,c;
[a,b,c]=[1,2]
console.log(a,b,c);// 1 2 undifined
}
{
let [a,b,c]=[1,,3];
a,b,c;//1 undefined 3
}
{
let [a,b]=[1,[2,3]];
a;//1
b;//[2,3]
}
{
let [a,...b]=[1,2,3];
a;//1
b;//[2,3]
}
{
let [a, b, ...c] = [1];
a;//1
b;//undefined
c;//[]
}
{
let [a,[b],c]=[1,[2,3],4]
a;//1
b;//2
c;//4
}
기본값으로 설정
let [a='hello']=[];
a;//hello
let [b='world']=['yes'];
b;//yes
// ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。
let [c=13]=[undefined];
c;//13
let [d=12]=[null];
d;//null
예
let [a, b]=[2,3];
[a,b]=[b,a];
console.log(a);//3
해체 객체
일반 사용
let a,b;
({ a, b } = { a: 2, b: 3 })
console.log(a,b);//2,3;
//变量名与属性名一致
let {name}={name:'小明',age:18};
console.log(name);//小明
// 变量名与属性名不一致
let {a:name,b:age}={a:'小明',b:18};
console.log(name,age);//小明 18
해체가 실패 할 경우, 변수의 값은 정의와 동일하다.
let {a}={b:2};
a;//undefined
중첩
function fn() {
return {
name: '小明',
userList: [
{ name: '小红' }
]
}
}
let res = fn();
let { name: person, userList: [{ name: otherPerson }] } = res;
console.log(person, otherPerson);//小明 小红
해체 모드, 중첩 된 객체입니다 존재하지 않는 속성 및 부모 자식 객체가 상주하는 경우 발생합니다.
let {a: {b}} = {b: 666};
기본값으로 설정
let {a=1}={a:3};