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

JavaScript获取对象布尔属性不存在时默认返回true的更优写法

有更简洁的实现方案,优先推荐使用 ES2020 新增的空值合并运算符 ??,代码可以简化为:

myObj.myProp ?? true

这个写法完美匹配你的需求:空值合并运算符只会在左侧值为 undefined 或 null 时返回右侧的默认值,刚好对应「属性不存在时返回true,属性存在时返回属性本身的布尔值」的规则,完全符合你的测试用例:

  • myObj = {}:myObj.myProp 为 undefined,返回 true
  • myObj = { myProp: false }:左侧值为 false 不属于空值范畴,直接返回 false
  • myObj = { myProp: true }:直接返回原属性值 true

如果需要兼容不支持 ES2020 的旧运行环境,可以用 in 运算符判断属性是否存在,写法比你原有的 typeof 判断更直观:

'myProp' in myObj ? myObj.myProp : true

注意踩坑

不要误用逻辑或运算符 ||,myObj.myProp || true 的写法会把 false 也判定为需要返回默认值的场景,最终返回true,不符合你的要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:36:00