如何简化验证为短箭头函数?检查值是否已定义且非空字符串
简洁的验证箭头函数方案
嘿,我懂你想要精简验证逻辑的需求——既要确保值已定义(不是undefined),又要排除空字符串,还得写出干净的箭头函数对吧?这里有几个实用的方案,你可以根据场景选择:
1. 最直白准确的写法
如果追求绝对清晰,不想有任何隐式转换的歧义,这个写法最稳妥:
const isValid = val => typeof val !== 'undefined' && val !== '';
它明确检查了两个核心条件:值不是undefined,同时不是空字符串,完全匹配你的需求,可读性也拉满。
2. 利用空值合并的极简写法
如果你能接受ES6+语法,这个写法超级简洁,还能正确处理0、false这类容易被误判的有效值:
const isValid = val => (val ?? '') !== '';
原理很直观:
- 若
val是undefined,val ?? ''会返回空字符串,最终结果为false - 若
val本身是空字符串,直接返回false - 若
val是其他值(包括0、false),都会返回true
(如果你的场景需要额外排除null,可以调整为(val ?? '') !== '' && val !== null)
3. 仅针对字符串类型的简化写法
如果你确定要验证的一定是字符串类型,还可以更短:
const isValid = val => val?.length > 0;
不过要注意,这个写法对数字、布尔值等类型不适用(比如0?.length是undefined,会返回false,但0本身是符合“已定义且非空字符串”要求的),所以只适合明确的字符串场景。
另外一定要避开你提到的"" >= 0这种写法,它依赖隐式类型转换把空字符串转成0,完全达不到排除空字符串的目的,确实要避免。
内容的提问来源于stack exchange,提问作者Basti
相关产品推荐
相关产品推荐

