javascript解构赋值是什么以及如何使用?【教程】
发布时间 - 2026-01-21 00:00:00 点击率:次解构赋值是对象/数组的「模式匹配式提取」,按名或按序提取值并重绑定变量,不创建新结构;对象解构依赖键名而非顺序,支持重命名与默认值;数组解构依赖索引位置,支持跳位、剩余元素和嵌套。
解构赋值不是语法糖,是对象/数组的「模式匹配式提取」
JavaScript 解构赋值本质是用一个结构模式(比如 { a, b } 或 [x, y])从源数据中按名或按序提取值并赋给同名/同位置的变量。它不创建新对象或数组,只是读取和重绑定——所以不能对未声明变量直接解构(会报 ReferenceError),也不能解构 null 或 undefined(会抛 TypeError)。
对象解构:属性名必须完全匹配,但可重命名和设默认值
对象解构靠键名匹配,不是顺序。常见误用是以为 { name, age } 能从 { age: 25, name: 'Alice' } 中按书写顺序取值——其实顺序无关,只看键是否存在。
- 重命名用
oldName: newName语法,例如const { userName: name } = user; - 默认值在属性不存在或为
undefined时生效,const { city = 'Beijing' } = user;;但null不触发默认值 - 嵌套解构要写全路径:
const { profile: { email } } = user;,若profile为undefined会报错,可加空对象默认值:const { profile = {} } = us
er; const { email } = profile;
数组解构:靠索引位置,支持跳位、剩余元素和嵌套
数组解构严格按索引顺序,空位代表跳过该索引,const [a, , c] = [1, 2, 3]; 中 a 是 1,c 是 3。
- 剩余元素用
...捕获,必须放在最后:const [first, ...rest] = [1, 2, 3, 4]; - 嵌套数组解构直接写内层数组模式:
const [a, [b, c]] = [1, [2, 3]]; - 解构函数返回值很常见:
const [err, data] = await Promise.allSettled([fetch('/api')]);,但注意 Promise.allSettled 返回的是对象数组,需先映射再解构
解构常被忽略的边界情况
解构看似简单,但几个细节极易引发静默错误或运行时异常:
- 字符串可被解构(因为有迭代器),
const [a, b] = 'hi';得到a === 'h',b === 'i';但数字不行:const [n] = 42;报TypeError: 42 is not iterable - 解构参数用于函数定义时,形参默认值只在传入
undefined时生效,传null会直接解构失败 -
let和const声明时可解构,var也可以,但重复声明(如先const { x } = obj;再const x = 1;)会报SyntaxError
真正容易出问题的,往往不是语法写错,而是默认值逻辑没覆盖 null,或者嵌套层级里某个中间属性意外为 undefined。别依赖“看起来应该有”,解构前加一层存在性检查更稳妥。
# javascript
# java
# ai
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
linux top下的 minerd 木马清除方法
如何在阿里云虚拟服务器快速搭建网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何用好域名打造高点击率的自主建站?
如何为不同团队 ID 动态生成多个非值班状态按钮
网站建设要注意的标准 促进网站用户好感度!
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
如何快速搭建支持数据库操作的智能建站平台?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
网站制作报价单模板图片,小松挖机官方网站报价?
南京网站制作费用,南京远驱官方网站?
浅谈Javascript中的Label语句
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
海南网站制作公司有哪些,海口网是哪家的?
重庆市网站制作公司,重庆招聘网站哪个好?
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Laravel如何实现数据库事务?(DB Facade示例)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
香港服务器部署网站为何提示未备案?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
用v-html解决Vue.js渲染中html标签不被解析的问题
微信小程序 五星评分(包括半颗星评分)实例代码
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel如何处理异常和错误?(Handler示例)
如何自定义建站之星网站的导航菜单样式?
高防服务器租用如何选择配置与防御等级?
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
5种Android数据存储方式汇总
zabbix利用python脚本发送报警邮件的方法
制作公司内部网站有哪些,内网如何建网站?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
如何用IIS7快速搭建并优化网站站点?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何在IIS7上新建站点并设置安全权限?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
高端云建站费用究竟需要多少预算?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Android滚轮选择时间控件使用详解


