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

关于JavaScript中原始值解构等价代码的技术问询

解构原始值与对象字面量的差异

这两行代码完全不等价,具体分析如下:

  • 对于代码const { a, toFixed } = 1;:
    按照MDN关于解构赋值的说明,原始值1会被自动包装为对应的Number包装对象(等同于Object(1)),随后从这个包装对象上解构属性。toFixed是Number.prototype上的方法,因此能被成功提取;a不存在于Number包装对象上,所以会被赋值为undefined。执行后toFixed指向Number.prototype.toFixed,a的值为undefined。

  • 对于代码const { a, toFixed } = {1};:
    这行代码本身是语法错误。JavaScript对象字面量要求键值对形式,{1}不符合语法规范,引擎会直接抛出错误,无法执行。即便修正为合法的对象(比如{ 1: 1 }),这个普通对象上也没有toFixed方法,解构后toFixed会是undefined,和第一行代码的结果仍完全不同。

总结:只有当右侧表达式为Object(1)(即1的包装对象)时,才和const { a, toFixed } = 1;等价;而{1}是无效代码,两者没有可比性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:50:00