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

我看到了这个线程 ,但是没有看到 JavaScript 特定的示例。是否有一个简单的string.Empty在 JavaScript 中可用,还是仅检查""一种情况?

答案

如果您只想检查是否有任何价值,可以

if (strValue) {
    //do something
}

如果您需要专门检查是否有一个空字符串,而不是 null,那么我认为使用===运算符来检查""是最好的选择(这样您就可以知道它实际上是您要与之进行比较的字符串) )。

if (strValue === "") {
    //...
}

为了检查字符串是否为空,空或未定义,我使用:

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

为了检查字符串是否为空,空或未定义,我使用:

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

用于检查字符串是否为空白或仅包含空格:

String.prototype.isEmpty = function() {
    return (this.length === 0 || !this.trim());
};

以上所有都是好的,但这会更好。使用!!不是 )运算符。

if(!!str){
some code here;
}

或使用类型转换:

if(Boolean(str)){
    codes here;
}

两者都执行相同的功能,将变量类型转换为布尔值,其中str是变量。
返回falsenull,undefined,0,000,"",false
对于字符串 “0” 和空格 “”,返回true

您可以最接近str.Empty (前提是 str 是字符串)是:

if (!str.length) { ...

如果您需要确保字符串不只是一堆空白(我假设这是用于表单验证),则需要对这些空格进行替换。

if(str.replace(/\s/g,"") == ""){
}

我用 :

function empty(e) {
  switch (e) {
    case "":
    case 0:
    case "0":
    case null:
    case false:
    case typeof this == "undefined":
      return true;
    default:
      return false;
  }
}

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
  })) // false

您可以使用lodash :_.isEmpty(value)。

它涵盖了许多情况,例如{}''nullundefined等。

但它总是返回trueNumber类型的 Javascript 基本数据类型一样_.isEmpty(10)_.isEmpty(Number.MAX_VALUE)都返回true

var s; // undefined
var s = ""; // ""
s.length // 0

JavaScript 中没有任何内容代表空字符串。检查length (如果您知道 var 始终是字符串)或""

功能:

function is_empty(x)
{
   return ( 
        (typeof x == 'undefined')
                    ||
        (x == null) 
                    ||
        (x == false)  //same as: !x
                    ||
        (x.length == 0)
                    ||
        (x == "")
                    ||
        (x.replace(/\s/g,"") == "")
                    ||
        (!/[^\s]/.test(x))
                    ||
        (/^\s*$/.test(x))
  );
}

ps 在 Javascript 中, return后不要使用 Line-Break;

尝试:

if (str && str.trim().length) {  
    //...
}