js 判空值 最佳实践

47 天前
 mqnu00

变量 a

我通常是

if (a) {...}

但是会遇到数字 0 的情况,那就是

if (a !== null && a !== undefined) {...}

然后想着是不是要封装一个isEmpty函数 请问需要封装吗?

5995 次点击
所在节点    JavaScript
74 条回复
liuwk
47 天前
[null,undefined,'',false].includes(a) 我都这样写的
USDT
47 天前
if (a != null) {
// a is not null or undefined
}

没想到吧,==这种邪教在这里居然有用😏
toy007
47 天前
第二种漏了: 空字符串 '', 非数字 NaN
coldmonkeybit
47 天前
我们是写了个 isEmpty 判断
toy007
47 天前
sorry 好像是我搞反了
craftsmanship
47 天前
2 楼正解 最简洁的形式 但对 JS 各种怪癖不熟悉的人来说可读性很差
shintendo
47 天前
if (a || a === 0)
zsc8917zsc
47 天前
@USDT #2 ==挺好的还能对比 1 和'1' ,魔功自古讲究一个简单粗暴好用
AtlantaANiu
47 天前
!(a??true)
mqnu00
47 天前
@toy007 第二种确实都漏了😂
leoQaQ
47 天前
@shintendo #7 我一般也是这样
FakerLeung
47 天前
@USDT #2 好用是好用,但是会被门禁拦下来
marcong95
47 天前
当时我刚开始用 Standard JS 代码规范的时候,就看到了关于等号的用法里面就学会了用 == 判空这种魔幻用法

Always use === instead of ==.
Exception: obj == null is allowed to check for null || undefined.
hronro
47 天前
@FakerLeung 门禁是指 ESLint 之类的?我记得 ESLint 对 == 的使用,是可以配置成只允许 == null 的
han3sui
47 天前
直接 lodash-es isEmpty()
jsq2627
47 天前
别封装,对于阅读代码的人,看到 isEmpty 并不知道内部实现是怎样的,对 0 / NaN / '' 是怎么处理的,还要点进去看,很麻烦

就用 if (a !== null && a !== undefined) {...} 一目了然,不管是熟手还是新手都知道在干什么。
Ulduar
47 天前
这种问题 AI 最强大
shakaraka
47 天前
接口层用 zod 保证入参,在业务中用 ts 保证业务类型。少封装这种。不然一会给你个正常的空值你拿来当 else ,除了问题你都不知道是哪里出的
tyrone2333
47 天前
?? 和 ?. 了解一下
NerbraskaGuy
47 天前
用!!吧,虽然可读性很差,追求可读性的话就是枚举一遍了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1170998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX