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

为什么在JS中给数值类型变量a赋值a.test=1不会抛出错误?

问题解答

首先明确const的核心规则:const声明的变量禁止被重新赋值,但这不代表它指向的值完全不可变。

你这段代码里的a是基本类型Number值1,执行a.test = 1时,JavaScript会自动完成以下操作:

  • 把基本类型的a临时包装成一个Number对象(相当于隐式执行new Number(1))
  • 给这个临时对象添加test属性并赋值为1
  • 这个临时对象用完后立刻被销毁,完全不会影响原始的基本类型值1

所以后续的输出逻辑就很清晰了:

  • console.log(a)输出的还是原始的基本类型1
  • 执行console.log(a.test)时,又会创建一个全新的临时Number对象,这个新对象里没有test属性,因此输出undefined

为什么没报错?因为你没有触发const的限制条件——重新给a赋值(比如a = 2才会抛出错误),只是给临时生成的包装对象添加属性,这在JS里是合法操作,不会触发报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:35:39