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

JavaScript解构赋值中undefined、false、null的行为差异问题咨询

代码行为解释

1. var {a} = undefined 报错的原因

对象解构的执行前提是:等号右侧的值可以被强制转换为对象。
根据ECMAScript官方规范,undefined 和 null 是仅有的两个无法被转换为包装对象的原始类型,因此尝试对这两个值做对象解构时,会直接抛出 TypeError: Cannot destructure property 'a' of 'undefined' or 'null' 错误。

2. var {a} = false 时变量a为undefined的原因

布尔值 false 属于可转换为包装对象的原始类型,执行解构时,JS会先将false转换为对应的Boolean包装实例对象。
由于Boolean实例对象本身不存在 a 这个属性,读取JS对象不存在的属性时默认返回undefined,因此解构后变量a的赋值结果就是undefined。你可以运行console.log(new Boolean(false).a)验证,输出结果和你的解构结果完全一致。


内容的提问来源于stack exchange,提问作者C. Peck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:27:03