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

JavaScript中false/true访问不存在的属性为何返回undefined?

为什么访问true/false的不存在属性返回undefined而非报错?

这事儿核心在于JS的「自动装箱」机制:

  • true和false是布尔原始值,本身并不是对象,但当你尝试访问它们的属性时,JS会自动把它们包装成临时的Boolean对象。
  • 对于一个已经存在的对象(哪怕是临时的包装对象),访问它身上不存在的属性,本来就会返回undefined,只有当你试图访问null或undefined的属性时,才会抛出类型错误。

对比看更清楚:

// 访问null的不存在属性,直接报错
null.nonExistingProperty // Uncaught TypeError: Cannot read properties of null (reading 'nonExistingProperty')

// 访问布尔原始值的不存在属性,先装箱成Boolean对象,再返回undefined
true.nonExistingProperty // undefined

而且这个临时生成的Boolean对象在属性访问结束后就会被销毁,不会对原始的布尔值产生任何影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:22:03