数组类型
左右各一个数组
let a,b;
[a,b] = [1,2];
console.log(a,b); // 1, 2
数值赋值给变量(rest)
let a,b,rest;
[a,b,...rest] = [1,2,3,4,5,6];
console.log(a,b,rest); // 1, 2, [3,4,5,6]
数组嵌套
var [a,[b,c]] = [1,[2,3]];
console.log(a,b,c); // 1, 2, 3
指定默认值
var [a,b,c,d = 4] = [1,2,3];
console.log(a,b,c,d); // 1, 2, 3, 4
使用场景
变量交换
let a = 1;
let b = 2;
[a,b] = [b,a];
console.log(a,b); // 2, 1
返回值赋给变量
function f(){
return [1,2];
}
let a,b;
[a,b] = f();
console.log(a,b); // 1, 2
只选择需要的返回值
function f(){
return [1,2,3,4,5];
}
let a,b,c;
[a,,b,,c] = f();
console.log(a,b,c); // 1, 3, 5
对象类型
左右各一个对象
let o = {a: 1, b: 2};
let {a,b} = o;
console.log(a,b); // 1, 2
默认值
后面的a覆盖了前面的a
let {a = 1 , b = 2} = {a : 3};
console.log(a,b); // 3, 2
获取json数据的值
{
let manInfo = {
name: 'Tim Chen',
more: [{
age: '23',
sex: 'male',
}]
}
let {name:myName, more:[{age:myAge}]} = manInfo;
console.log(myName,myAge); // Tim Chen , 23
}
对象方法类型
把对象赋给一些特殊对象,即相当于使用对象的方法。
let {floor,ceil} = Math;
let a = 1.9;
console.log(floor(a));
字符串类型
获取字符串长度
let {length} = 'Hello';
console.log({length}); // {length:5}
解构字符串
let [a,b,...c] = 'Hello';
console.log(a,b,c); // H e ["l", "l", "o"]
函数类型
解构函数参数
var arr = [1,2];
function test([a,b]){
console.log("a:", a);
console.log("b:", b);
}
console.log(test(arr)); // a: 1 b: 2
不区分参数顺序
注意:这里的参数是对象,不是数组!!!
var obj = {b:2, a:1};
function test({a,b}){
console.log("a:", a);
console.log("b:", b);
}
console.log(test(obj)); // a: 1 b: 2
、
参数默认值
var obj = {b:2};
function test({a = 10, b}){...}