当前位置: 首页 > article >正文

讲解ES6中的变量和对象的解构赋值

在 ES6 中,解构赋值是一种非常方便的语法,它使得从数组或对象中提取值变得更加简洁和直观。解构赋值支持变量赋值,可以通过单独提取数组或对象的元素来赋值给变量。

下面我将分别讲解 数组解构对象解构 的基本用法和一些高级特性。

1. 数组的解构赋值

数组解构赋值是从数组中提取元素并将其赋值给变量。

基本语法:
 
let [a, b, c] = [1, 2, 3];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
跳过某些元素:

通过在解构赋值时留空,可以跳过数组中的某些元素。
 

let [a, , c] = [1, 2, 3];
console.log(a); // 1
console.log(c); // 3
赋值给剩余变量:

使用 ...(展开运算符)可以将剩余的元素赋值给一个新数组。
 

let [a, ...rest] = [1, 2, 3, 4];
console.log(a);     // 1
console.log(rest);  // [2, 3, 4]
解构嵌套数组:

如果数组中嵌套了数组,可以直接解构嵌套的部分。
 

let [a, [b, c]] = [1, [2, 3]];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

2. 对象的解构赋值

对象解构赋值是从对象中提取属性并将其赋值给变量。

基本语法:
 
let person = { name: "John", age: 30 };
let { name, age } = person;
console.log(name); // John
console.log(age);  // 30
赋值给不同的变量名:

你可以将对象的属性解构赋值给不同名称的变量,使用 : 来指定新变量的名称。
 

let person = { name: "John", age: 30 };
let { name: fullName, age: yearsOld } = person;
console.log(fullName); // John
console.log(yearsOld); // 30
提供默认值:

如果对象中没有指定的属性,可以给变量设置默认值。
 

let person = { name: "John" };
let { name, age = 25 } = person;
console.log(name); // John
console.log(age);  // 25
解构嵌套对象:

你也可以解构嵌套的对象。
 

let person = { name: "John", address: { city: "New York", country: "USA" } };
let { name, address: { city, country } } = person;
console.log(name);    // John
console.log(city);    // New York
console.log(country); // USA
解构与函数参数:

解构赋值还可以用于函数的参数,直接从传入的对象中提取数据。
 

function greet({ name, age }) {
  console.log(`Hello ${name}, you are ${age} years old.`);
}

let person = { name: "John", age: 30 };
greet(person); // Hello John, you are 30 years old.
结合默认值与解构:

你可以给对象的解构赋值添加默认值,即使对象的某些属性不存在,变量仍然能获得默认值。
 

let person = { name: "John" };
let { name, age = 25 } = person;
console.log(name); // John
console.log(age);  // 25

3. 高级用法

解构赋值中的嵌套与复杂结构:

有时候,我们需要解构嵌套的数组和对象。以下是一个解构多层嵌套结构的例子:
 

let person = {
  name: "John",
  address: { city: "New York", state: "NY" },
  hobbies: ["reading", "travelling"]
};

let {
  name,
  address: { city, state },
  hobbies: [firstHobby, secondHobby]
} = person;

console.log(name);       // John
console.log(city);       // New York
console.log(state);      // NY
console.log(firstHobby); // reading
console.log(secondHobby);// travelling
与数组的索引配合使用:

当你不关心数组中所有的元素时,可以使用 _(下划线)作为占位符,表示你不关心的部分。
 

let [first, _, third] = [1, 2, 3];
console.log(first);  // 1
console.log(third);  // 3

总结

  • 数组解构赋值使得从数组中提取值变得简洁,可以跳过元素并使用展开符 ... 来获取剩余元素。
  • 对象解构赋值可以直接从对象中提取属性,支持重命名变量、设置默认值以及解构嵌套对象。
  • 解构赋值提供了对函数参数、复杂数据结构等多种场景的支持,使得代码更加简洁且易于维护。

解构赋值是一个强大的特性,可以帮助我们写出更简洁、可读性更高的代码。


http://www.kler.cn/a/543777.html

相关文章:

  • STM32 裸机 C编程 vs micropython编程 vs linux python
  • 3dtiles——Cesium ion for Autodesk Revit Add-In插件
  • 为什么mysql默认RR(repeat read可重复读)隔离级别
  • bug-ant下拉框解决下拉框跟随表单容器(指定下拉框挂载容器):getPopupContainer=“p=>p.parentNode“
  • vue-点击生成动态值,动态渲染回显输入框
  • deepseek大模型集成到idea
  • C++ STL容器之set使用及复现
  • 【Go】01输入输出
  • WPF正则表达式验证输入是否包含中文字母数字,不能是纯符号
  • 基于 SpringBoot的流浪宠物管理系统【免费送】
  • chrome-mojo 概述
  • Linux基础18-C语言篇之运算符Ⅰ【入门级】
  • 深度学习-人脸识别 对用户面部特征进行提取和匹配,实现快速、准确的人脸识别解锁
  • 22、深度学习 - 自学之路 - 隐藏层常用激活使用tanh函数,输出层激活函数使用softmax函数,对MNIST进行升级后的程序展示。
  • 自然语言处理与词嵌入
  • 内网ip网段记录
  • MySQL中类似PostgreSQL中的string_agg函数--GROUP_CONCAT函数的使用
  • 算法——搜索算法:原理、类型与实战应用
  • 如果维护了多种语言版本的文本对应关系,另一种语言只需要将对应文本填入对应位置即可,这种情况应该如何实现自动填入
  • CEF132编译指南 MacOS 篇 - 构建 CEF (六)
  • 纯前端检查是否有发版,并提示用户刷新
  • 基于HTTPS的docker私有仓库搭建
  • 硬件学习笔记--40 电磁兼容试验-4 快速瞬变脉冲群试验介绍
  • Docker 的打包及基本使用
  • Unity学习part1
  • Docker Desktop Windows 安装