是否存在极简语法可实现与`x === 0 ? true : !!x`等价的、将零视为真值的假值检测逻辑?
嘿,刚好有几个极简写法,完全匹配你要的逻辑,而且比x === 0 ? true : !!x更简洁:
首选可读性版:x === 0 || !!x
这个表达式和你的原逻辑完全等价,拆解一下:
- 只要
x是0,直接返回true(短路求值,后面的!!x不会执行) - 其他情况用
!!x把x转成标准布尔值,和原表达式的分支逻辑一模一样
极致紧凑版:!(!x && x !== 0)
如果追求字符数最少,这个写法也完全可行,逻辑是反过来推导的:
!x先判断x是不是假值(包括0)!x && x !==0筛选出除了0之外的所有假值(比如null、undefined、空串、false、NaN)- 最后取反,就得到「是0 或者 是真值」的布尔结果,和你的需求完全匹配
验证所有边界情况
两种写法都能正确处理所有场景:
x = 0→true✔️x = null→false✔️x = undefined→false✔️x = ''→false✔️x = false→false✔️x = NaN→false✔️x = 123→true✔️x = 'abc'→true✔️x = []→true✔️(空数组在JS里是真值,符合预期)x = {}→true✔️(空对象同理)
个人更推荐第一个写法,可读性更强,团队协作里别人一眼就能看懂你的意图,毕竟代码是写给人看的,其次才是机器😉
内容的提问来源于stack exchange,提问作者Akheloes
相关产品推荐
相关产品推荐

