填表、导数据、做自动化小工具时,常遇到‘这个字段没填,程序就崩了’的情况——八成是漏了字符串是否为空判断。
比如Excel里导出的客户电话列,看着是空的,实际可能是空格、制表符,甚至是个看不见的零宽字符。直接用 .length === 0 或 == '',一跑就翻车。
常见误区:空字符串 ≠ 看起来空
这些都算‘看起来空’,但不是真正的空字符串:
' ' // 一个空格
'\t\n\r' // 制表符、换行、回车
'\u200b' // 零宽空格(复制粘贴时偷偷混进来的)
null // JS里不是字符串,但常从表单取值拿到
实用判断法(JavaScript为例)
日常够用又稳妥的一行写法:
function isEmpty(str) {
return str == null || String(str).trim() === '';
}
解释下:
• str == null 涵盖 null 和 undefined;
• String(str) 把数字、布尔等转成字符串,避免报错;
• .trim() 去掉首尾空白,连全角空格、换行都干掉。
测试一下:
isEmpty('') // true
isEmpty(' \t\n\r ') // true
isEmpty(0) // false(数字0不是空)
isEmpty('0') // false(字符串'0'有内容)
其他语言也类似
Python里别光用 if not s:,小心 s = ' ' 过不去:
def is_empty(s):
return s is None or str(s).strip() == ''
Excel公式也能防一手:在辅助列输入 =IF(TRIM(A1)="","空","有内容"),比肉眼盯靠谱多了。
下次写个自动整理通讯录的小脚本,或者处理批量导入的表格,先加个空判断,省得半夜被弹窗提醒‘Cannot read property 'trim' of undefined’吵醒。