如何检查一个变量,如果是
null
或undefined
,是什么之间的差异null
和undefined
?==
和之间有什么区别===
(很难在Google上搜索“ ===”)?
JavaScript检查null与undefined以及==和===之间的差异
区别是微妙的。
在JavaScript中,undefined
变量是从未声明或从未分配值的变量。假设您声明var a;
了一个实例,那么a
它将为undefined
,因为它从未分配任何值。
但是,如果您随后分配,a = null;
则a
现在将为null
。在JavaScript中,null
是一个对象(typeof null
如果您不相信我,请在JavaScript控制台中尝试),这意味着null是一个值(实际上甚至undefined
是一个值)。
例:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
这在函数参数中可能很有用。您可能需要一个默认值,但认为null是可以接受的。在这种情况下,您可以执行以下操作:
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
如果您省略optional
参数,则doSomething(1, 2) then
optional将是"three"
字符串,但是如果您通过,doSomething(1, 2, null)
则optional将是null
。
对于相等==
和严格相等的===
比较器,第一个是弱类型,而严格相等也检查值的类型。这意味着0 == "0"
将返回true;while 0 === "0"
将返回false,因为数字不是字符串。
您可以使用这些运营商之间要检查undefined
的null
。例如:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
最后一种情况很有趣,因为它允许您检查变量是未定义的还是null,而没有其他任何东西:
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
如果(逻辑)检查是否为负号(!),并且您希望同时捕获JS null
和undefined
(因为不同的浏览器将为您提供不同的结果),则可以使用限制性较小的比较:例如:
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
这将同时捕获null
和undefined
规范是为这些问题提供完整答案的地方。总结如下:
- 对于变量
x
,您可以:
null
通过使用进行直接比较来检查是否===
。例:x === null
undefined
通过以下两种基本方法之一检查它:与undefined
或直接比较typeof
。由于种种原因,我更喜欢typeof x === "undefined"
。- 检查它是否是其中之一,
null
并undefined
通过使用==
和依赖略为神秘的强制类型来强制x == null
执行您想要的操作。
==
和之间的基本区别===
是,如果操作数是不同类型,===
则将始终返回,false
而==
使用导致某些稍微不直观的行为的规则会将一个或两个操作数转换为相同类型。如果操作数具有相同的类型(例如,两个都是字符串,例如typeof
上面的比较),==
并且===
它们的行为将完全相同。
更多阅读:
- 安格斯·克罗尔的真相,平等和JavaScript
- Andrea Giammarchi的JavaScript强制性神秘化
- comp.lang.javascript常见问题解答:JavaScript类型转换
未定义
这意味着该变量尚未初始化。
范例:
var x;
if(x){ //you can check like this
//code.
}
等于(==)
它只检查值等于数据类型。
范例:
var x = true;
var y = new Boolean(true);
x == y ; //returns true
因为它只检查值。
严格等于(===)
检查值和数据类型应该相同。
范例:
var x = true;
var y = new Boolean(true);
x===y; //returns false.
因为它检查数据类型x是原始类型,而y是布尔对象。
如何检查变量是否为null或未定义
只需检查变量是否具有如下有效值:
if(variable)
如果变量不包含,它将返回true:
- 空值
- 未定义
- 0
- 假
- “”(空字符串)
- N
尝试不同的逻辑。您可以使用下面的代码检查所有四(4)条条件以进行验证,例如not null,not blank,not undefined和not zero,仅在javascript和jquery中使用此代码(!(!(variable)))。
}