Javascript: 如何检查一个字符串是否为空?

127

我知道这个问题很基础,但是我刚接触JavaScript,却在任何地方都找不到答案。

如何检查一个字符串是否为空?


4
请参阅https://dev59.com/uXVC5IYBdhLWcg3w4Vb6 - Crescent Fresh
1
空格是否算为空?如果是的话,你可能想要使用正则表达式来测试它。 - scunliffe
3
来这里补充一下,有些人应该检查 isBlank,即 variable.trim() === '' - Dennis
修剪字符串总是有意义的如果(title.trim().length === 0){ //代码} - Amitesh Bharti
5个回答

172

我检查长度。

if (str.length == 0) {
}

55
我有点迂腐,但 if (!str || str.length === 0) 更好一些。(请注意有3个等号。)不过还是给 @Dustin 加一分。 - intrepidis
13
如果您在字符串中添加空格,length 会计算这些空格,因此我们不能仅通过 length 来确定一个字符串是否为空。 - avolquez
9
@evolquez说,空格不同于空白,null也是如此。 空格是一个字符,因此不能被视为“”(空字符串)。 OP询问空字符串的问题,我认为这个解决方案很好。 - Fr0zenFyr
3
我理解为什么在一般情况下使用 === 更好,但对于这个特定案例,我找不到类型转换导致 str.length 为零的原因。你是将其用作约定俗成的写法还是有意外结果的示例? - user
9
别忘了修剪 if (!str || str.trim().length === 0) - Jake Pucan
显示剩余5条评论

60

如果您想知道它是否为空字符串,请使用 === 而不是 ==。

if(variable === "") {
}

这是因为 === 仅在两侧的值类型相同时返回 true,在本例中是字符串。

例如: (false == "") 会返回 true,并且 (false === "") 将返回 false。


13

这个应该可以工作:

if (variable === "") {

}

12

但是为了更好的检查:

if(str === null || str === '')
{
    //enter code here
}

3
事实上,在它被关闭之前我打算编辑这个代码块:if(!str || str == "") { //输入代码在这里 }有很多方法可以实现这个功能,但是如果一个字符串中有"",它不一定是null。空并不等同于null。 - Christopher Richa
3
你是从哪里得知在JS中,null变量的长度为0的?你找到了哪个源头来获取这个信息? - PositiveGuy
1
如果str未定义怎么办?如果您正在检查falsiness,则最好使用if(!str)。但是,如果您正在检查空字符串,如问题所述,我认为nxt的方法是最好的。接受的答案应该使用===,如果str为null / undefined,则会出现经典的Uncaught ReferenceError。 - MrBoJangles
这个答案是错误的,因为即使变量 strnull,条件也会成立,而 nullobject 类型,而不是 string - Nickensoul

-12
if (value == "") {
  // it is empty
}

10
如果value确实是一个字符串,那么这个表达式是正确的。但是,如果value等于false、0或null,它也会返回true。因此建议使用===来严格比较。 - Residuum
2
@Residuum:该问题的意思是“如何检查一个字符串是否为空?” - Gumbo
3
我认为在任何情况下都适用的答案比提供最低限度的答案更好,所以我赞同Residuum的观点。这种事情尤其重要,需要向初学者指出。 - OregonGhost
2
@Gumbo:正如问题所示,提问者对Javascript并不熟悉。而且由于Javascript不是一种强类型语言,因此未明确检查类型是常见的错误来源。我也曾经历过这样的事情。 - Residuum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接