直接看例子:
不使用对象解构:
let person = {
name: "Tom",
age: 18
}
let personName = person.name;
let personAge = person.age;
console.log(personName); //Tom
console.log(personAge); //18
使用对象解构:
let person = {
name: "Tom",
age: 18
}
let { name: personName, age: personAge } = person;
console.log(personName); //Tom
console.log(personAge); //18
使用解构,可以在一个类似对象字面量的结构中,声明多个变量,同时执行多个赋值操作。如果想要变量直接使用属性的名称,那么也可以简写:
let person = {
name: "Tom",
age: 18
}
let { name, age } = person;
console.log(name); //Tom
console.log(age); //18
解构赋值不一定与对象的属性匹配。赋值的时候可以忽略某些属性,==而如果引用的属性不存在,则该变量的值就是undefined;==
let person = {
name: "Tom",
age: 18
}
let { name, job } = person;
console.log(name); //Tom
console.log(job); //undefined
也可以在解构赋值的同时定义默认值,这适用于引用的属性不存在的情况:
let person = {
name: "Tom",
age: 18
}
let { name, job = 'coder' } = person;
console.log(name); //Tom
console.log(job); //coder
注意的是null
与undefined
不能被解构,否则会抛出错误:
let {_} = null; //typeError
let {_} = undefined; //typeError
解构并不要求变量必须在解构表达式中声明。不过,要想给事先声明的变量赋值,则表达式必须包含在一对括号中: