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

咨询:JavaScript示例代码中解构赋值的求值逻辑

代码求值过程详解

这段代码结合了数组解构、对象解构与默认值处理,下面一步步拆解它的求值逻辑:

  1. 初始化数组op
    首先定义了包含两个对象的数组op,其中第一个对象的busiCode属性值为"001",第二个对象的busiCode为"002"。

  2. 核心解构赋值语句const [{ busiCode = '' } = {}] = op
    这行代码可以拆成多层理解:

  • 最外层是数组解构:[ ... ] = op,作用是从数组op中提取对应位置的元素。这里只提取了数组的第一个元素(即op[0],也就是{busiCode:"001", busiName:"Order"})。
  • 对提取到的第一个元素做对象解构:{ busiCode = '' } = op[0],意思是从该对象中取出busiCode属性的值,赋值给同名变量busiCode。
  • = ''是给busiCode设置默认值:如果解构时找不到busiCode属性,或者属性值为undefined,就用''兜底。但这个例子里op[0]明确有busiCode:"001",所以默认值不会生效。
  • 后面的= {}是给数组解构的第一个位置设置默认值:如果op[0]是undefined(比如op是空数组),就用空对象{}作为解构目标,避免解构undefined时报错。这里op[0]存在,所以这个默认值也不会触发。
  1. 执行console.log(busiCode)
    经过解构赋值,变量busiCode已经被赋值为op[0].busiCode的"001",因此控制台输出001。

举个变体例子验证默认值逻辑:

const op = []
const [{ busiCode = '' } = {}] = op
console.log(busiCode) // 输出'',因为op[0]是undefined,会用默认的{},解构空对象时找不到busiCode,触发变量默认值''

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:05:22