如何在JavaScript中检查空/未定义/空字符串?

2022-08-29 21:46:47

在JavaScript中是否有,或者只是检查的情况?string.Empty""


答案 1

空字符串、未定义、空值、...

要检查真值::

if (strValue) {
    // strValue was non-empty string, true, 42, Infinity, [], ...
}

要检查伪值

if (!strValue) {
    // strValue was empty string, false, 0, null, undefined, ...
}

空字符串(仅限!

要检查是否正好是空字符串,请与使用 === 运算符进行比较,以确定严格相等性:""

if (strValue === "") {
    // strValue was empty string
}

若要严格检查是否为空字符串,请使用 !== 运算符

if (strValue !== "") {
    // strValue was not an empty string
}

答案 2

为了检查变量是否为 falsey,或者它的 length 属性是否等于零(对于字符串,这意味着它是空的),我使用:

function isEmpty(str) {
    return (!str || str.length === 0 );
}

(请注意,字符串并不是唯一具有 length 属性的变量,数组也具有它们。

或者,您可以使用(不是这样)新可选的链式和箭头函数来简化:

const isEmpty = (str) => (!str?.length);

它将检查长度,在值为空的情况下返回,而不会引发错误。在空值的情况下,零是假的,结果仍然有效。undefined

为了检查变量是否为false,或者字符串是否仅包含空格或为空,我使用:

function isBlank(str) {
    return (!str || /^\s*$/.test(str));
}

如果你愿意,你可以像这样对原型进行猴子修补String

String.prototype.isEmpty = function() {
    // This doesn't work the same way as the isEmpty function used 
    // in the first example, it will return true for strings containing only whitespace
    return (this.length === 0 || !this.trim());
};
console.log("example".isEmpty());

请注意,猴子修补内置类型是有争议的,因为它可以破坏依赖于内置类型现有结构的代码,无论出于何种原因。