如何在JS中检查值是否为空且不是空字符串

mis*_*irl 56 javascript

在Javascript中是否检查值是否为空且不是空字符串?我正在使用以下一个:

var data; //get its value from db 
if(data != null && data != '') {
   // do something
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否还有其他更好的解决方案.谢谢.

Ger*_*api 102

如果你真的想确认一个变量不是null而不是一个特殊的空字符串,你会写:

if(data !== null && data !== '') {
   // do something
}
Run Code Online (Sandbox Code Playgroud)

请注意,我更改了您的代码以检查类型相等(!==| ===).

但是,如果您只想确保代码仅针对"合理"值运行,那么您可以像其他人已经说过的那样编写:

if (data) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

因为在javascript中,空值和空字符串都等于false(即null == false).

这两部分代码之间的区别在于,对于第一部分,每个非特定空值或空字符串的值都将进入if.但是,在第二个,每一个真正的十岁上下的价值将进入if:false,0,null,undefined和空字符串,不会.

  • 0 在很多情况下是一个合理的值 (5认同)
  • 这就是为什么“合理”这个词用引号括起来的原因:) (4认同)

小智 13

两个null和一个空字符串都是JS中的虚假值.因此,

if (data) { ... }
Run Code Online (Sandbox Code Playgroud)

完全足够了.

旁边的注释:我会避免在我的代码中有一个可以在不同类型中显示的变量.如果数据最终将是一个字符串,那么我最初将使用空字符串定义我的变量,因此您可以这样做:

if (data !== '') { ... }
Run Code Online (Sandbox Code Playgroud)

没有null(或任何奇怪的东西data = "0")阻碍.


vip*_*lrv 6

而不是使用

if(data !== null && data !== ''  && data!==undefined) {

// do something
}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下简单代码

if(Boolean(value)){ 
// do something 
}
Run Code Online (Sandbox Code Playgroud)
  • 直观上为“空”的值(例如0,空字符串,null,undefined和NaN)将变为false
  • 其他值变为真


pil*_*lot 6

我经常测试真值以及字符串中的空格:

if(!(!data || data.trim().length === 0)) {
  // do something here
}
Run Code Online (Sandbox Code Playgroud)

如果您有一个由一个或多个空格组成的字符串,它将评估为真。


Sam*_*ler 5

if (data?.trim().length > 0) {
   //use data
}
Run Code Online (Sandbox Code Playgroud)

所述?. 可选的链接操作者将短路和返回undefined如果数据是nullishnullundefined),其将计算为在虚假if表达。