JavaScript中判断值为null或true的最优雅实现方案是什么?
优化实现方案
你写的代码逻辑本质是德摩根定律的反向表述,直接转成正逻辑写法即可,可读性和性能都更好,根据你的需求可以选以下两种:
1. 严格匹配仅null/true(无隐式转换,最推荐)
如果要求仅当值严格等于null或者严格等于true时返回true,直接用严格相等做正向判断:
function isNullOrTrue(nullableBool){ return nullableBool === null || nullableBool === true; }
这种写法完全贴合你「判断值为null或者true」的需求描述,代码本身就是注释,没有理解成本,同时全用严格相等===避免了隐式类型转换的隐藏坑,运算步骤也比原写法少。
2. 和原写法逻辑完全等价(兼容undefined)
如果你的原逻辑中需要把undefined也判定为符合条件(原写法里!= null会同时匹配null和undefined),可以调整为:
function isNullOrTrue(nullableBool){ return nullableBool == null || nullableBool === true; }
这个写法和你给出的原代码逻辑100%一致,但不需要绕双重否定的弯,可读性提升非常明显。
如果习惯用ES2020+的新语法,还可以用空值合并运算符简化上述写法:
const isNullOrTrue = nullableBool => (nullableBool ?? true) === true;
内容的提问来源于stack exchange,提问作者Anamaria Miehs
相关产品推荐
相关产品推荐

