解构意思就是分解一个东西的结构,可以用一种类似数组的方式定义N个变量,可以将一个数组中的值按照规则赋值过去。

1
2
var [name,age]=['wjh',8];
console.log(name,age);

嵌套赋值

1
2
3
4
5
6
7
8
9
10
let [x,[y],z]=[1,[2.1]];
console.log(x,y,z);

let [x,[y,z]] = [1,[2.1,2.2]];
console.log(x,y,z);

let [json,arr,num] = [{name:'wjw'},[1,2],3];
console.log(json,arr,num);

// 1 2.1 undefined 1 2.1 2.2 { name: 'wjw' } [ 1, 2 ] 3

省略赋值

1
2
let [,,x]=[1,2,3]
console.log(x);

解构对象

对象也可以被解构

1
2
3
4
5
6
var obj = {name:'zfpx',age:8};
//对象里的name属性的值会交给name这个变量,age的值会交给age这个变量
var {name,age} = obj
//对象里的name属性的值会交给myname这个变量,age的值会交给myage这个变量
let {name: myname, age: myage} = obj;
console.log(name,age,myname,myage);

默认值

在赋值和传参的时候可以使用默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let [a='a',b='b',c=new Error('C必须指定')] = [1, , 3];
console.log(a,b,c);

function ajax(options){
var method = options.method || "get";
var data = options.data || {};
}

function ajax(method='get',data){
console.log(arguments);
}

ajax({
method:'post',
data:{'name':'wjh'}
})