:
$var=0;
$var="";
$var="0";
$var=NULL;
验证$ var是0还是" 0"或""或NULL
if (!$var) {...}
$var=0;
$var="";
$var="0";
$var=NULL;
if (!$var)
适用于除" 0"
在JavaScript / jQuery中是否有通用的方法来检查所有类型的空/ null /零值,就像php一样?
答案 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 (只是在您的确切案例中),您可以这样做:
(否则undefined
和NaN
会产生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