Skip to content

空值检查 (isEmpty)

检查给定的值是否为空。

  • 如果给定的值是字符串,检查它是否为空字符串
  • 如果给定的值是数组、Map 或 Set,检查其大小是否为 0
  • 如果给定的值是类数组对象,检查其长度是否为 0
  • 如果给定的值是对象,检查它是否是没有属性的空对象
  • 原始值(字符串、布尔值、数字或 bigints)被视为空

签名

typescript
function isEmpty(value: unknown): boolean;

参数

  • value (unknown): 要检查的值。

返回值

(boolean) 如果值为空返回 true,否则返回 false

示例

typescript
import { isEmpty } from '@fu/matrix';
// 或
const isEmpty = window.fuMatrix.isEmpty;

// 空值检查
isEmpty(null);       // => true
isEmpty(undefined);  // => true
isEmpty('');         // => true
isEmpty([]);         // => true
isEmpty({});         // => true
isEmpty(new Map());  // => true
isEmpty(new Set());  // => true
isEmpty(0);          // => true
isEmpty(false);      // => true
isEmpty(true);       // => true
isEmpty(123);        // => true
isEmpty({ length: 0 }); // => true (类数组对象)

// 非空值检查
isEmpty('text');     // => false
isEmpty([1, 2]);     // => false
isEmpty({ a: 1 });   // => false
isEmpty({ 0: 'a', length: 1 }); // => false (类数组对象)

空值判断规则

以下值被视为空:

  • null
  • undefined
  • 空字符串 ''
  • 空数组 []
  • 空对象 {}
  • 空 Map new Map()
  • 空 Set new Set()
  • 空类数组对象 { length: 0 }
  • 所有数字(包括 0
  • 所有布尔值(包括 falsetrue
  • 所有 BigInt 值

以下值不被视为空:

  • 非空字符串(包括只有空格的字符串 ' '
  • 非空数组
  • 非空对象
  • 非空 Map 和 Set
  • 非空类数组对象
  • 函数
  • 日期对象
  • 正则表达式

注意事项

  • 该函数主要用于检查容器是否为空以及值是否为原始值
  • isInvalid 函数不同,该函数将所有数字和布尔值视为空
  • 对于 Map 和 Set,检查其 size 属性是否为 0
  • 对于普通对象,检查其是否有自己的可枚举属性
  • 对于类数组对象,检查其 length 属性是否为 0
  • 类实例通常不被视为空,除非它们没有自己的可枚举属性