ES6 解构详解

一、数组解构

1. 基本用法

可以按照数组元素的顺序将数组中的值提取到变量中。

javascript 复制代码
const arr = [1, 2, 3];
const [a, b, c] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

2. 忽略某些元素

如果不想提取数组中的某些元素,可以使用逗号占位。

javascript 复制代码
const [x, , z] = [1, 2, 3];
console.log(x); // 1
console.log(z); // 3

3. 剩余元素

使用扩展运算符...可以将剩余的元素收集到一个新数组中。

javascript 复制代码
const [first, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // 1
console.log(rest); // [2, 3, 4, 5]

4. 交换变量值

利用数组解构可以很方便地交换两个变量的值。

javascript 复制代码
let x = 1;
let y = 2;
[x, y] = [y, x];
console.log(x); // 2
console.log(y); // 1

二、对象解构

1. 基本用法

根据对象的属性名来提取值并赋给变量,变量名需与属性名相同。

javascript 复制代码
const obj = { name: "John", age: 30 };
const { name, age } = obj;
console.log(name); // 'John'
console.log(age); // 30

2. 自定义变量名

可以使用:为提取的变量指定不同的名称。

javascript 复制代码
const { name: userName, age: userAge } = obj;
console.log(userName); // 'John'
console.log(userAge); // 30

3. 嵌套对象解构

对于嵌套的对象,也可以进行解构。

javascript 复制代码
const nestedObj = {
  person: {
    name: "John",
    address: {
      city: "New York",
    },
  },
};
const {
  person: {
    name,
    address: { city },
  },
} = nestedObj;
console.log(name); // 'John'
console.log(city); // 'New York'

4. 默认值

当对象中不存在某个属性时,可以为解构的变量设置默认值。

javascript 复制代码
const { gender = "Male" } = obj;
console.log(gender); // 'Male'

三、函数参数解构

1. 数组参数解构

在函数参数中使用数组解构,可以方便地获取函数传入的数组中的元素。

javascript 复制代码
function sum([a, b]) {
  return a + b;
}
console.log(sum([1, 2])); // 3

2. 对象参数解构

在函数参数中使用对象解构,可以方便地获取函数传入的对象中的属性值。

javascript 复制代码
function greet({ name, age }) {
  console.log(`Hello, I'm ${name} and I'm ${age} years old.`);
}
greet({ name: "John", age: 30 });
相关推荐
只会写Bug的程序员1 分钟前
面试之《原型与原型链》
前端·面试
秋天爱美丽1 分钟前
Reflect.get和target[key]有何不同?
es6·js
6 分钟前
📌面试答不上的问题-HTTP缓存
前端·面试
the_one8 分钟前
从手动更新到自动魔法:用两个按钮带你破解Vue响应式原理
前端·javascript
不知名的码字员8 分钟前
当中国象棋遇上JavaScript:代码全解剖,一场写给程序员的相声表演
前端·javascript
DarkLONGLOVE8 分钟前
一文读懂 XML 文档:概念、结构与应用场景!
前端·json
whisper9 分钟前
高度不固定下拉框的过度动画,怎么实现?
前端
京东云开发者9 分钟前
浏览器崩溃的第一性原理:内存管理的艺术
前端
onejason11 分钟前
如何利用爬虫获取腾讯新闻详情数据:实战指南
前端·python
用户7116075457815 分钟前
LAYA引擎WebGL上下文丢失与恢复处理机制
前端