JavaScript空值数据大探秘:如何精准判断null、undefined与空字符串

26 阅读1分钟
const isEmpty = (x) => {
    if (Array.isArray(x) || typeof x === "string" || x instanceof String) {
        return x.length === 0;
    }

    if (x instanceof Map || x instanceof Set) {
        return x.size === 0;
    }

    if ({}.toString.call(x) === "[object Object]") {
        return Object.keys(x).length === 0;
    }
    if (!isNaN(parseFloat(x)) && isFinite(x)) {
        return false;
    }
    return !x;
};
console.log(isEmpty(null)); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty([])); // true
console.log(isEmpty({})); // true
console.log(isEmpty("")); // true
console.log(isEmpty(new Set())); // true
console.log(isEmpty(0));