在JavaScript中是否可能同时检查null和undefined?
if(_var == null || _var == undefined) {
}
if(_var == null || _var == undefined) {
}
undefined
不是一个常量,而是一个全局变量,因此可以更改其值。因此,使用 typeof
运算符来检查 undefined
会更可靠:if (typeof _var === 'undefined') { }
_var
未声明,则您的表达式将返回ReferenceError。但是,您仍然可以使用上面显示的typeof
运算符进行测试。if (typeof _var === 'undefined' || _var === null) { }
undefined
是全局对象的一个属性,它是不可写的、不可配置的(不可删除)和不可枚举的 :) - Christian C. Salvadó是的
然而,使用==运算符并不是必要的。如果foo未定义,则使用foo == null也将为真。但请注意,undefined和null并不相同。这是因为==执行类型转换,导致foo == null对于foo未定义也为真。
if (!_var) {
// Code here.
}
这应该可以工作,因为undefined
和null
都被类型强制转换为false
。
当然,如果_var
实际上是false
,那么就会有小问题,但它仍然可以工作,因为在大多数情况下,您想知道的是_var
不是true
而且不是一个对象。
false
、null
和 undefined
之外还有三个其他的假值:空字符串 ""
、0
和 NaN
。将其翻译为中文:请注意,JavaScript 中除了 false
、null
和 undefined
之外还有三个其他的 falsy 值:一个空字符串 ""
,0
和 NaN
。 - Daniel Vassallovar valuea: number;
var valueb: number = null;
function check(x, name) {
if (x == null) {
console.log(name + ' == null');
}
if (x === null) {
console.log(name + ' === null');
}
if (typeof x === 'undefined') {
console.log(name + ' is undefined');
}
}
check(a, 'a');
check(b, 'b');
$defined
函数(在jQuery中一定也有相应的等价函数)。
_var
是未定义的,那么_var == undefined
表达式将永远不会被执行,因为_var == null
进行类型强制转换,正如Pim在下面所指出的,而且undefined == null
返回true
。_var == null
也将测试undefined
,但我认为依赖于类型强制转换通常是不推荐的。 - Daniel Vassallo