JavaScript Destructuring 解构赋值
解构赋值语法
解构赋值语法将对象属性解包到变量中:
let {firstName, lastName} = person;
它还可以解包数组和任何其他可迭代对象:
let [firstName, lastName] = person;对象解构
示例
// 创建一个对象
const person = {
firstName: "John",
lastName: "Doe",
age: 50
};
// 解构
let {firstName, lastName} = person;亲自试一试 »属性的顺序无关紧要:
示例
// 创建一个对象
const person = {
firstName: "John",
lastName: "Doe",
age: 50
};
// 解构
let {lastName, firstName} = person;亲自试一试 »注意:
解构并非破坏性操作。
解构不会改变原始对象。
对象默认值
对于可能缺失的属性,我们可以设置默认值:
示例
// 创建一个对象
const person = {
firstName: "John",
lastName: "Doe",
age: 50
};
// 解构
let {firstName, lastName, country = "US"} = person;亲自试一试 »对象属性别名
示例
// 创建一个对象
const person = {
firstName: "John",
lastName: "Doe",
age: 50
};
// 解构
let {lastName : name} = person;亲自试一试 »字符串解构
解构的一个用途是解包字符串字符。
注意:
解构赋值可以用于任何可迭代对象。
数组解构
我们可以将数组变量提取到我们自己的变量中:
示例
// 创建一个数组
const fruits = ["Bananas", "Oranges", "Apples", "Mangos"];
// 解构
let [fruit1, fruit2] = fruits;亲自试一试 »跳过数组值
我们可以使用两个或多个逗号来跳过数组值:
示例
// 创建一个数组
const fruits = ["Bananas", "Oranges", "Apples", "Mangos"];
// 解构
let [fruit1,,,fruit2] = fruits;亲自试一试 »数组位置值
我们可以从数组的特定索引位置获取值:
示例
// 创建一个数组
const fruits = ["Bananas", "Oranges", "Apples", "Mangos"];
// 解构
let {[0]:fruit1 ,[1]:fruit2} = fruits;亲自试一试 »Rest 属性
您可以使用 Rest 属性结束解构语法。
此语法会将所有剩余值存储到一个新数组中:
示例
// 创建一个数组
const numbers = [10, 20, 30, 40, 50, 60, 70];
// 解构
const [a,b, ...rest] = numbers亲自试一试 »解构映射
示例
// 创建映射
const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200]
]);
// 解构
let text = "";
for (const [key, value] of fruits) {
text += key + " is " + value;
}亲自试一试 »交换 JavaScript 变量
您可以使用解构赋值来交换两个变量的值:
示例
let firstName = "John";
let lastName = "Doe";
// 解构
[firstName, lastName] = [lastName, firstName];亲自试一试 »浏览器支持
解构 是 ES6 特性。
自 2017 年 6 月起,所有现代浏览器均已完全支持 ES6。
| Chrome 51 |
Edge 15 |
Firefox 54 |
Safari 10 |
Opera 38 |
| 2016年5月 | 2017年4月 | 2017年6月 | 2016年9月 | 2016年6月 |
