JavaScript中是否存在字符串.Empty,还是只是检查“”?


当前回答

您可以验证以下方法并了解其区别。

var j=未定义;console.log((typeof j==“undefined”)?“真”:“假”);var j=空;console.log((j==null)?“真”:“假”);var j=“”;console.log((!j)?“真”:“假”);var j=“Hi”;console.log((!j)?“真”:“假”);

其他回答

检查var a;存在删除值中的假空格,然后测试是否为空如果((a)&&(a.trim()!=“”)){//如果变量a不为空,请执行以下操作}

尝试以下代码:

function isEmpty(strValue)
{
    // Test whether strValue is empty
    if (!strValue || strValue.trim() === "" ||
        (strValue.trim()).length === 0) {
        // Do something
    }
}

下面是我用来处理这个问题的一些自定义函数。以及代码如何运行的示例。

常量v1=0常量v2=“4”常量v2e=未定义常量v2e2=空常量v3=[1,2,3,4]常量v3e=[]常量v4=真常量v4e=假常量v5={测试:'值'}常量v5e={}常量v6=“NotEmpty”常量v6e=“”函数为Numeric(n){回来isNaN(parseFloat(n))&&isFinite(n)}函数isEmpty(v,zeroIsEmpty=false){/***当执行类型检查时,null将始终返回“object”,因此我们首先过滤掉它*@参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof#typeof_null*/如果(v==空){返回true}如果(v==真){return false}if(类型v==='对象'){回来对象键(v)长度}如果(isNumeric(v)){返回zeroIsEmpty?parseFloat(v)==0:false}回来v | |!v.length | | v.length<1}console.log(isEmpty(v1),isEmpty(v1,true))console.log(isEmpty(v2),isEmptyconsole.log(isEmpty(v3),isEmpty(v3e))console.log(isEmpty(v4),isEmptyconsole.log(isEmpty(v5),isEmptyconsole.log(isEmpty(v6),isEmpty(v6e))

同样作为参考,以下是Lodash isEmpty的来源:

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

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

(请注意,字符串不是唯一具有长度属性的变量,例如,数组也有它们。)

或者,您可以使用(并非如此)新可选的链接和箭头函数来简化:

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());

请注意,monkey修补内置类型是有争议的,因为无论出于什么原因,它都会破坏依赖于内置类型现有结构的代码。

我宁愿使用非空白测试而不是空白测试

function isNotBlank(str) {
   return (str && /^\s*$/.test(str));
}