65 lines
1.6 KiB
Markdown
65 lines
1.6 KiB
Markdown
|
---
|
|||
|
title: Destructuring Assignment
|
|||
|
localeTitle: 解构分配
|
|||
|
---
|
|||
|
## 解构分配
|
|||
|
|
|||
|
Destructuring Assignment语法是一个Javascript表达式,可以从数组或对象中解压缩值或属性。
|
|||
|
|
|||
|
假设您有一个包含名字和姓氏的数组,因为它是两个值,但您希望将这些值重新分配给更具描述性的值。您可以使用Destructuring来完成此任务。
|
|||
|
|
|||
|
**ES5解构**
|
|||
|
|
|||
|
```js
|
|||
|
var fullName = ["John", "Smith"];
|
|||
|
var firstName = fullName[0];
|
|||
|
var lastName = fullName[1];
|
|||
|
|
|||
|
console.log(firstName, lastName); // John Smith
|
|||
|
```
|
|||
|
|
|||
|
**ES6解构**
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = ["John", "Smith"];
|
|||
|
const [firstName, lastName] = fullName;
|
|||
|
|
|||
|
console.log(firstName, lastName); // John Smith
|
|||
|
```
|
|||
|
|
|||
|
上面的示例显示了使用ES6 Destructuring Assignment的好处。
|
|||
|
|
|||
|
您还可以使用类似语法在对象上使用Destructuring
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = { first: "John", last: "Smith"};
|
|||
|
const {first, last} = fullName;
|
|||
|
|
|||
|
console.log(first, last); // John Smith
|
|||
|
```
|
|||
|
|
|||
|
对象解析分配略有不同,因为对象必须具有您要分配的名称的属性。因此,下面的代码不会按预期工作。
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = { first: "John", last: "Smith"};
|
|||
|
const {firstName, lastName} = fullName;
|
|||
|
|
|||
|
console.log(firstName, lastName); // undefined undefined
|
|||
|
```
|
|||
|
|
|||
|
您仍然可以使用以下语法获得所需的结果。
|
|||
|
|
|||
|
```js
|
|||
|
const obj = {propertyName: value}
|
|||
|
{propertyName: desiredVariableName} = obj
|
|||
|
```
|
|||
|
|
|||
|
我们之前的例子将被重写如下:
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = { first: "John", last: "Smith"};
|
|||
|
const {first: firstName, last: lastName} = fullName;
|
|||
|
|
|||
|
console.log(firstName, lastName); // John Smith
|
|||
|
|
|||
|
```
|