// 简单地说,对象的解构赋值就是使用与对象匹配的结构来实现对象属性的赋值
// (实际就是用对象中的属性为变量赋值)。

// 不使用对象解构
let person = {name: 'Jack', age: 22}
let personName, personAge
personName = person.name
personAge = person.age
console.log(personName) // 'Jack'
console.log(personAge) // 22

// 使用对象解构
let person = {name: 'Jack', age: 22}
let {name: personName, age: personAge} = person
console.log(personName)
console.log(personAge)

// 如果想让变量直接使用属性的名称,可以使用简写语法
let person = {name: 'Jack', age: 22}
let {name, age} = person
console.log(name) // 'Jack'
console.log(age) // 22

// 当解构出的属性在对象中不存在时,则对应变量的值就是undefined
let person = {name: 'Jack', age: 22}
let {name, age, job} = person
console.log(name) // 'Jack'
console.log(job) // undefined

// 在解构的同时定义默认值,适用于解构出的属性不存在于源对象中的情况
let person = {name: 'Jack', age: 22}
let {name, age, job='software engineer'} = person
console.log(name)
console.log(job)

// 在函数参数列表中也可以进行解构赋值,对参数的解构赋值不会影响arguments对象
let person = {name: 'Jack', age: 22}
function printPerson(foo, {name, age}, bar) {
    console.log(arguments)
    console.log(name, age)
}
printPerson('1st', person, '2nd') // {"0":"1st","1":{"name":"Jack","age":22},"2":"2nd"}  'Jack' 22

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐