1. 数组的解构
let [a,b,c] = [1,2,3]
console.log(a, b, c) //1 2 3
let [a, [b], c] = [2, [3], 4]
a //2
b //3
c //4
//数组后面必须对应着数组
let [a] = 1 //报错
1.1. 默认值
let [a, b = 2] = [3]
a // 3
b // 2
let [a, b = 2] = [3, 4]
a //3
b //4
不管是数组还是对象对应值如果没有(没有对应值对应值就是undefined)就使用默认值,如果有就使用对应值
let [a=2, b=3] = [undefined, null]
a //2
b //null
let [a=1, b=a] = [2]
a //2
b //2
2. 对象的解构赋值
补充知识
let [name, age] = ['hunger', 3]
let p1 = {name, age}
//等同于
let p1 = {name: name, age: age}
//{name:'huger',age:3}
示例:
let {name, age} = {name: 'jirengu', age: 4}
name //‘jirengu’
age //4
//等同于
let name
let age
({name: name, age: age} = {name: 'jirengu', age: 4})
2.1. 默认值
let {x, y=5} = {x: 1}
x //1
y //5
3. 函数解构
//函数需要传入一个数组作为实参,数组里面需要传两个实参,
//如果什么都不传默认就是[1,2],如果传入一个空数组那么x和y就都是默认值,如果数组里只传了一个值,那么y就是默认值2,
//如果数组里传了两个那么就都是你传入的值
function add([x=1, y=2]=[1,2]){
return x+y
}
add()//3
add([2]) //4
add([3,4]) //7
//函数接受两个对象参数,每个对象里都需要传两个参数,
//如果什么都不传,默认就是{x:0, y:0}
//如果第一个对象只传x或y同样会出问题,因为另一个就会是undefined
function sum({x, y}={x:0, y:0}, {a=1, b=1}){
return [x+a, y+b]
}
sum({x:1, y:2}, {a:2}) //[3, 3]
函数里只要是一个整体的参数等于另一个对应的值,那么就是不传这个参数时,默认就用另一个值
4. 作用
let [x, y] = [1, 2];
[x, y] = [y, x]
x //2
y // 1
function ajax({url, type=‘GET’}){
}
ajax({url: ‘http://localhost:3000/getData’})
网友评论