字符串拼接时如何检测falsy字符串值而不使用if语句?
核心原因
你遇到的情况本质是:仅由空格组成的字符串属于truthy值,所以||运算符不会触发右侧的兜底逻辑。不需要使用if语句的话,有两种常用实现方案:
方案1:使用trim()处理后判断
如果业务逻辑中「全空白字符串」等价于无意义的空值,直接对拼接结果做trim()即可。trim()会移除字符串首尾的所有空白字符,全空白的字符串处理后会得到空字符串(falsy值),刚好符合逻辑:
let var1 = ''; let var2 = ''; // 模板字符串写法 let ex1 = `${var1} ${var2}`.trim() || "Is Falsy"; // 加号拼接写法 let ex2 = (var1 + ' ' + var2).trim() || "Is Falsy";
⚠️ 注意这个方案会把返回的有效字符串的首尾空白一同去掉,如果需要保留原始字符串的格式,用第二种方案。
方案2:正则匹配+三元表达式判断
如果需要保留原始字符串的前后空格,仅在整个字符串全为空白时才走兜底逻辑,可以用正则匹配全空白的规则,搭配三元表达式实现:
let var1 = ''; let var2 = ''; // ^\s*$ 正则匹配全为空白字符(空格、制表符、换行等)的字符串 let ex1 = /^\s*$/.test(`${var1} ${var2}`) ? "Is Falsy" : `${var1} ${var2}`; let ex2 = /^\s*$/.test(var1 + ' ' + var2) ? "Is Falsy" : var1 + ' ' + var2;
这种方案不会修改有效字符串的原始格式,适用性更广。
内容的提问来源于stack exchange,提问作者coolps811
相关产品推荐
相关产品推荐

