You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript复杂解构语句解析:剩余语法对未声明变量的作用机制

JavaScript 对象解构中的剩余语法解析

嘿,我来帮你把这段代码的逻辑拆解明白,搞清楚剩余语法在这里的工作方式~

一、未提前声明otherMessages时,剩余语法的作用

这里你完全不用提前声明otherMessages,因为整行代码用了const关键字——它在完成解构赋值的同时,已经帮你声明并初始化了message和otherMessages两个只读变量。剩余语法(...)的作用是把原对象中没被解构提取的属性,自动打包成一个新对象,直接赋值给这个刚被声明的otherMessages变量。

二、解构语句的整体功能

这行代码干了两件核心事:

  • 从messages对象里,把键为1的属性值拿出来,赋值给message变量;
  • 把messages里剩下的所有属性(也就是键为2的那个对象),收集到一个新对象里,赋值给otherMessages变量。

三、逐行拆解语句逻辑

我们把这行复杂的解构代码拆成几个部分看:

  1. 基础解构框架:const { ... } = messages
    这是对象解构的基础写法,意思是把右侧messages对象的属性,分配给左侧花括号里定义的变量。
  2. 计算属性名解构:[1]: message
    因为我们要提取的是数字键1对应的属性,所以用方括号包裹键名(这叫计算属性名),它会把messages[1]的值(也就是{ id: '1', text: 'Hello World', userId: '1' })赋值给message变量。
  3. 剩余语法收集:...otherMessages
    这里的...就是剩余运算符,它会遍历messages中除了已经被提取的键1之外的所有属性,把这些属性组装成一个全新的对象,然后赋值给otherMessages。

最后执行console.log("other messages: ", otherMessages)时,输出的结果会是:

other messages:  { 2: { id: '2', text: 'By World', userId: '2' } }

内容的提问来源于stack exchange,提问作者Henok Tesfaye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:09:05