切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
面试题
笔试题
解决方法
术语和定义
计算机基础知识
C# 面试题
异常错误
待学习
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
QA
javascript 解构 是如何工作,为什么需要解构
[TOC] # javascript 解构 是如何工作,为什么需要解构 ## 解构赋值如何工作? 解构赋值是一种语法,它允许你从数组或对象中**提取**值,并直接赋值给变量。其核心原理是“模式匹配”——左侧的“模式”与右侧的数据结构相匹配,每个变量会找到对应位置的值。 ### 对象解构 ```javascript const user = { name: 'Alice', age: 25 }; const { name, age } = user; // 等价于: // const name = user.name; // const age = user.age; ``` 花括号 `{}` 在左侧表示“我要从右侧对象中取出同名属性”。还可以重命名: ```javascript const { name: userName, age: userAge } = user; ``` ### 数组解构 ```javascript const arr = [10, 20]; const [a, b] = arr; // a = 10, b = 20 ``` 方括号 `[]` 表示按位置匹配。 ### 嵌套与默认值 ```javascript const data = { info: { title: 'demo', tags: ['js'] } }; const { info: { title, tags: [firstTag] } } = data; // title = 'demo', firstTag = 'js' const { score = 100 } = {}; // score = 100(默认值) ``` --- ## 为什么需要解构? ### 1. 减少重复代码 传统方式需要反复写 `obj.prop`: ```javascript // 没有解构 function greet(user) { console.log(`Hello, ${user.name}! You are ${user.age}.`); } // 使用解构 function greet({ name, age }) { console.log(`Hello, ${name}! You are ${age}.`); } ``` ### 2. 方便提取深层嵌套属性 ```javascript const config = { server: { port: 8080, host: 'localhost' } }; const { server: { port, host } } = config; // 直接得到 port, host,不用写 config.server.port 多次 ``` ### 3. 交换变量值 ```javascript let x = 1, y = 2; [x, y] = [y, x]; // 优雅交换 ``` ### 4. 函数参数默认值与重命名 ```javascript function fetchData({ url, method = 'GET' }) { ... } // 调用者只需传对象,内部直接使用 url, method ``` ### 5. 模块导入时只取需要的部分 ```javascript import { useState, useEffect } from 'react'; // 而不是 React.useState... ```
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号