检查字符串是否为零,零,空字符串,为空

时间:2014-12-08 21:09:02

标签: javascript jquery

PHP中的

$var=0;
$var="";
$var="0";
$var=NULL;

验证$ var是0还是" 0"或""或NULL

if (!$var) {...}
在jQuery / JavaScript中:

$var=0;
$var="";
$var="0";
$var=NULL;

if (!$var)适用于除" 0"

之外的所有值

在JavaScript / jQuery中是否有通用的方法来检查所有类型的空/ null /零值,就像php一样?

6 个答案:

答案 0 :(得分:6)

  

在JavaScript / jQuery中是否有通用的方法来检查所有类型的空/ null /零值,就像php一样?

没有。在PHP中,转换为布尔值的值产生的结果与JavaScript不同。所以你不能像PHP那样完全

为什么不(更多一点)明确地说它让你的代码更容易理解?

// falsy value (null, undefined, 0, "", false, NaN) OR "0"
if (!val || val === '0') { }

答案 1 :(得分:4)

抽象操作ToBoolean根据表11将其参数转换为Boolean类型的值:

  

未定义 false
       false
      布尔值结果等于输入参数(无转换)       数字如果参数为+ 0,-0或NaN,则结果为false;否则结果是真的       字符串如果参数为空字符串(其长度为零),则结果为false;       否则结果是真的       对象 true

0将返回false。

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

答案 2 :(得分:1)

如果您感觉 funky (只是在您的确切案例中),您可以这样做:
(否则undefinedNaN会产生false

+v===0

示例:

var a = [0, "",  "0", null];
var b = [1, "a", "1", {}];

a.forEach(function(v){
  console.log( +v===0 ); // true, true, true, true
});

b.forEach(function(v){
  console.log( +v===0 ); // false, false, false, false
});

答案 3 :(得分:0)

你可以很好地使用双重否定。

var test = 0;
console.log(!!test);

var test = "";
console.log(!!test);

var test = "0";
console.log(!!test);

var test = null;
console.log(!!test);

虽然"0"不是空字符串,因此它的计算结果为true,其余的返回false。

另外,我同意dfsq所做的评论,你不应该依赖于此。您应该了解并了解变量的类型。

答案 4 :(得分:0)

" 0"它不是假的,它是真的。因为' 0'是一个字符串。字符串如果存在则返回true。所以 !""应该返回false。如果您的数据以字符串形式返回零,则可以使用:

parseInt("0", 10);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

这将返回整数值或NaN。 !NaN将返回true,如果它是多个说... 0它将返回!0所以你可以这样做:

function nullOrEmpty(value) {
    return (!value && !parseInt(value));
}

答案 5 :(得分:0)

数字(变量)似乎产生预期的输出

Number(0) = 0
Number("0") = 0
Number("") = 0
Number(null) = 0
Number(false) = 0