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

ES6中的解构

在 JavaScript(包括 TypeScript)中,数组解构和对象解构是 ES6 引入的两个非常实用的语法特性,它们可以帮助我们更方便地从数组或对象中提取数据。
一、数组解构(Array Destructuring)
📌 基本用法:

js
深色版本

const colors = [‘red’, ‘green’, ‘blue’];

// 解构赋值
const [first, second] = colors;

console.log(first); // “red”
console.log(second); // “green”

✅ 特点:

按照顺序取出元素。可以跳过某些元素:js
深色版本

const [a, , c] = [‘apple’, ‘banana’, ‘cherry’];
console.log(a); // “apple”
console.log©; // “cherry”

可以设置默认值:

js
深色版本

const [name = 'Guest'] = [];
console.log(name); // "Guest"

二、对象解构(Object Destructuring)
📌 基本用法:

js
深色版本

const user = {
name: ‘Alice’,
age: 25,
gender: ‘female’
};

// 解构赋值
const { name, age } = user;

console.log(name); // “Alice”
console.log(age); // 25

✅ 特点:

按属性名匹配,不依赖顺序。可以为变量重命名:js
深色版本

const { name: fullName } = user;
console.log(fullName); // “Alice”

可以设置默认值:

js
深色版本

const { city = 'Unknown' } = user;
console.log(city); // "Unknown"

三、结合使用:函数返回值 + 解构

你提到的例子就是对象解构与数组解构的结合使用:

ts
深色版本

const [registerForm, { setFieldsValue, setProps, getFieldsValue }] = useForm({…});

分解一下:

useForm() 返回一个 数组,第一个元素是 registerForm 函数;
第二个元素是一个包含多个方法的对象,如 setFieldsValue, setProps, getFieldsValue;
这里用了:数组解构来获取 [0] 和 [1];然后对第二个元素(是个对象)进行对象解构,抽取出你需要的方法。

四、完整示例对比
类型 示例代码 输出结果
数组解构 const [a, b] = [10, 20]; a=10, b=20
对象解构 const { name, age } = { name: ‘Tom’, age: 30 }; name=‘Tom’, age=30
混合解构 const [{ title }, { author: writer }] = [{ title: ‘Book A’ }, { author: ‘John’ }]; title=‘Book A’, writer=‘John’

如果你想深入理解,还可以试试:

js
深色版本

function getUser() {
return {
id: 1,
info: {
name: ‘Bob’,
email: ‘bob@example.com’
},
roles: [‘admin’, ‘user’]
};
}

const {
id,
info: { name },
roles: [primaryRole]
} = getUser();

console.log(id); // 1
console.log(name); // Bob
console.log(primaryRole); // admin

如果你还有关于嵌套解构、默认值、可选链等进阶用法的问题,也可以继续问我 😊

http://www.xdnf.cn/news/5817.html

相关文章:

  • 【SpringBoot】集成kafka之生产者、消费者、幂等性处理和消息积压
  • c语言第一个小游戏:贪吃蛇小游戏08(贪吃蛇完结)
  • 本地的ip实现https访问-OpenSSL安装+ssl正式的生成(Windows 系统)
  • 职坐标AIoT开发技能精讲培训
  • Tomcat的调优
  • 【用「概率思维」重新理解生活】
  • RabbitMQ 核心概念与消息模型深度解析(二)
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-融合VLLM、MCP与Agent(七)
  • 六、Hive 分桶
  • OpenHarmony平台驱动开发(十五),SDIO
  • tomcat与nginx之间实现多级代理
  • DeepSeek、B(不是百度)AT、科大讯飞靠什么坐上中国Ai牌桌?
  • css iconfont图标样式修改,js 点击后更改样式
  • 哈希表:数据世界的超级索引
  • 基于深度学习的工业OCR数字识别系统架构解析
  • 机器学习 --- 特征工程(一)
  • Spring Boot 使用 OSHI 实现系统运行状态监控接口
  • Conda在powershell终端中无法使用conda activate命令
  • docker及docker-compose安装及使用
  • mac 10.15.7 svn安装
  • 设计模式系列(02):设计原则(一):SRP、OCP、LSP
  • Visual Studio 2022 跨网络远程调试
  • 多线程(二)
  • 【2025年前端高频场景题系列】使用同一个链接,如何实现PC打开是web应用、手机打是-个H5 应用?
  • 免费Office图片音频高效提取利器
  • ik 分词器 设置自定义词典
  • @Component 注解:Spring 组件扫描与管理的基石
  • 如何使用 WebBrowserPassView 查看所有浏览器密码?
  • 【WordPress博客AI内容辅助生成/优化工具箱插件下载无标题】
  • 语义分割模型部署到嵌入式终端的通用操作流程