在JavaScript开发过程中,变量的空值和空白字符判断是很多业务逻辑的必经环节,比如表单校验、接口返回数据处理、默认值赋值等场景都需要对变量状态做准确判断,不严谨的判断逻辑很容易引发程序异常。

常见的空值与空白字符场景
JavaScript中需要特殊处理的空值类型主要有以下几种:
undefined:变量声明但未赋值时的默认值null:主动声明的空值引用- 空字符串
'':长度为0的字符串 - 空白字符:仅包含空格、制表符、换行符等不可见字符的字符串,比如
' '、'tn' - 其他假值:
0、false、NaN,这类值虽然为假值但通常不属于需要校验的空值范畴
基础判断方式的局限性
很多开发者会直接使用双等号或者逻辑非来判断变量是否为空,这种方式存在明显的局限性:
// 直接使用逻辑非判断 let test1 = ''; let test2 = null; let test3 = undefined; let test4 = ' '; console.log(!test1); // true,符合预期 console.log(!test2); // true,符合预期 console.log(!test3); // true,符合预期 console.log(!test4); // false,不符合预期,空白字符串没有被识别 console.log(!0); // true,误判,0是合法数值
可以看到直接使用!value的方式会把0、false等合法值也判定为空,同时无法识别仅包含空白字符的字符串,无法满足健壮性要求。
通用健壮性检查方案
我们可以封装一个通用的检查函数,同时覆盖空值和空白字符的判断,同时排除合法假值的误判:
/**
* 检查变量是否为空值或仅包含空白字符
* @param {*} value 待检查的变量
* @returns {boolean} 为空或空白字符返回true,否则返回false
*/
function isEmptyOrBlank(value) {
// 先判断是否为null或undefined
if (value === null || value === undefined) {
return true;
}
// 判断是否为字符串类型
if (typeof value === 'string') {
// 去除首尾空白字符后判断长度
return value.trim().length === 0;
}
// 其他类型如果不是null/undefined,默认返回false
return false;
}
这个函数首先排除了null和undefined的情况,然后针对字符串类型使用trim方法去除首尾空白字符后判断长度,非字符串类型的其他值(比如0、false、对象、数组等)都不会被判定为空,符合大部分业务场景的需求。
不同场景的适配调整
如果业务需要把0、false也判定为空值,可以调整判断逻辑:
function isEmptyOrBlankStrict(value) {
// 先判断是否为null或undefined
if (value === null || value === undefined) {
return true;
}
// 判断是否为字符串类型
if (typeof value === 'string') {
return value.trim().length === 0;
}
// 判断是否为假值,排除空字符串(已经在上一步处理)
if (!value && value !== 0 && value !== false) {
return true;
}
return false;
}
如果还需要处理数组和对象的空值情况,可以继续扩展函数逻辑:
function isEmptyOrBlankExtended(value) {
if (value === null || value === undefined) {
return true;
}
if (typeof value === 'string') {
return value.trim().length === 0;
}
if (Array.isArray(value)) {
return value.length === 0;
}
if (typeof value === 'object') {
return Object.keys(value).length === 0;
}
return false;
}
注意事项
trim方法是ES5引入的,如果需要兼容更低版本的浏览器,可以自己实现trim逻辑,或者使用正则匹配空白字符- 如果变量可能是其他类型比如数字、布尔值,需要根据业务场景明确是否要判定为空,避免误判合法值
- 接口返回的数据如果有可能是数字类型的空值,比如返回
''或者null,需要先做类型统一再判断
做空值判断时始终要明确业务场景的需求,不要盲目使用通用的判断逻辑,避免出现不符合预期的判断结果。
JavaScript变量空值检查空白字符处理健壮性校验修改时间:2026-06-20 13:42:15