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

Javascript 检查字符串是否为零,零,空字符串,null,javascript,jquery,Javascript,Jquery,在PHP中: 验证$var是否为0或“0”或“”或NULL 在jQuery/JavaScript中: if (!$var) {...} if(!$var)适用于除“0”以外的所有值 JavaScript/jQuery中是否有一种常规方法可以像php一样检查所有类型的空/空/零值?抽象操作ToBoolean将其参数转换为布尔类型的值,如表11所示: 未定义错误 Nullfalse 布尔值结果等于输入参数(无转换)。 Number如果参数为+0、-0或NaN,则结果为false;否则结果为真。 S

在PHP中:

验证$var是否为0或“0”或“”或NULL

在jQuery/JavaScript中:

if (!$var) {...}
if(!$var)
适用于除“0”以外的所有值


JavaScript/jQuery中是否有一种常规方法可以像php一样检查所有类型的空/空/零值?

抽象操作ToBoolean将其参数转换为布尔类型的值,如表11所示:

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

0将返回false


你可以很好地使用双底片

$var=0;
$var="";
$var="0";
$var=NULL;
尽管
“0”
不是空字符串,因此它的计算结果为true,其余的返回false

此外,我同意dfsq的评论,即您不应该依赖于此。您应该知道并理解变量所包含的类型。

“0”的第一个不是假,而是真。因为“0”是一个字符串。字符串(如果存在)返回true。所以 !“”应该返回false。也就是说,如果数据以字符串形式返回零,则可以使用:

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

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

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

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

这将返回整数值或NaN。 !NaN将返回true,如果它是一个数字,则表示。。。0它将返回!0,因此您可以执行以下操作:

parseInt("0", 10);
如果你觉得不舒服(就在你的例子中),你可以这样做:
(否则,
未定义
NaN
将导致
错误

例如:

+v===0
JavaScript/jQuery中是否有一种常规方法可以像php一样检查所有类型的空/空/零值

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

为什么不(稍微)明确一点,让你的代码更容易理解呢

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
});
数字(变量)似乎产生了预期的输出

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

不要依赖这种令人困惑的类型。对
==
使用显式严格检查。如果字符串不是空的,但只有空格字符,该怎么办?如果包括这些,则可以将值转换为数字。所有这些都将以
0
if(+my_var==0){
如果这真的是你的情况,为什么不检查
!value | | value='0'
?谢谢,我注意到了这一点,但我正在寻找一种在JS中检查它的通用方法,就像在php中那样。
parseInt
而不是
Parse.Int
“字符串如果存在,则返回true。所以!”“应该返回false。”这是不对的。
!”
返回
true
。我首先回答了
!+v
,但另一方面它不可靠:Felix:根据你的回答:函数为空(myvar){var res=false;if(!myvar | | myvar=='0')res true;return res;}此===的解决方案没有提供足够的覆盖率。如果val=“00”,它将返回true而不是false。
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
});
// falsy value (null, undefined, 0, "", false, NaN) OR "0"
if (!val || val === '0') { }
Number(0) = 0
Number("0") = 0
Number("") = 0
Number(null) = 0
Number(false) = 0