JavaScript获取对象布尔属性不存在时默认返回true的更优写法
有更简洁的实现方案,优先推荐使用 ES2020 新增的空值合并运算符 ??,代码可以简化为:
myObj.myProp ?? true
这个写法完美匹配你的需求:空值合并运算符只会在左侧值为 undefined 或 null 时返回右侧的默认值,刚好对应「属性不存在时返回true,属性存在时返回属性本身的布尔值」的规则,完全符合你的测试用例:
myObj = {}:myObj.myProp为undefined,返回truemyObj = { myProp: false }:左侧值为false不属于空值范畴,直接返回falsemyObj = { myProp: true }:直接返回原属性值true
如果需要兼容不支持 ES2020 的旧运行环境,可以用 in 运算符判断属性是否存在,写法比你原有的 typeof 判断更直观:
'myProp' in myObj ? myObj.myProp : true
注意踩坑
不要误用逻辑或运算符 ||,myObj.myProp || true 的写法会把 false 也判定为需要返回默认值的场景,最终返回true,不符合你的要求。
内容的提问来源于stack exchange,提问作者freefaller
相关产品推荐
相关产品推荐

