undefined和null在javascript中是假的,但是,
var n = null;
if(n===false){
console.log('null');
} else{
console.log('has value');
}
但它返回'有价值'当在控制台中尝试时,为什么不在' null' ?
答案 0 :(得分:4)
您可以使用not operator(!):
var n = null;
if(!n){ //if n is undefined, null or false
console.log('null');
} else{
console.log('has value');
}
// logs null
布尔值被认为是假的或者是真的。所以如果你这样使用:
var n = Boolean(null);
if(n===false){
console.log('null');
} else{
console.log('has value');
}
//you'll be logged null
答案 1 :(得分:3)
您可以使用
检查虚假值var n = null;
if (!n) {
console.log('null');
} else {
console.log('has value');
}
演示:Fiddle
或检查是否真实如
var n = null;
if (n) { //true if n is truthy
console.log('has value');
} else {
console.log('null');
}
演示:Fiddle
答案 2 :(得分:1)
价值是"假的"表示将转换为布尔值的结果为false
:
Boolean(null) // false
Boolean(undefined) // false
// but
Boolean("0") // true
这与将与布尔值进行比较非常不同:
null == false // not equal, null == true is not equal either
undefined == false // not equal, undefined == true is not equal either
// but
"0" == true // not equal, however, `"0" == false` is equal
由于您使用strict comparison,情况更简单:如果操作数不是相同的数据类型,则严格相等比较运算符返回false
。 null
的类型为Null,false
的类型为Boolean。
但即使您使用了宽松的比较,abstract equality algorithm也定义了只有null
和undefined
彼此相等。
根据您要测试的具体内容,您有以下几种选择:
if (!value) // true for all falsy values
if (value == null) // true for null and undefined
if (value === null) // true for null
一般来说,你应该总是喜欢严格的比较,因为JS'类型转换规则可能令人惊讶。其中一个例外是将值与null
进行比较,因为松散比较也会捕获undefined
。
答案 3 :(得分:0)
===
检查身份 - 完全相同的类型和值。所以null !== false
首先是因为它们不是同一类型,因此在使用===
时不匹配。
如果您只是想检查任何虚假值,请查看:
if (!n)
如果您想专门检查null
,请检查null
,如下所示:
if (n === null)