JavaScript检查null与undefined以及==和===之间的差异

  1. 如何检查一个变量,如果是nullundefined,是什么之间的差异nullundefined

  2. ==之间有什么区别===(很难在Google上搜索“ ===”)?

凯斯丁2020/03/12 12:34:05

尝试不同的逻辑您可以使用下面的代码检查所有四(4)条条件以进行验证,例如not null,not blank,not undefined和not zero,仅在javascript和jquery中使用此代码(!(!(variable)))。

function myFunction() {
var data;  //The Values can be like as null, blank, undefined, zero you can test

if(!(!(data)))
{
   //If data has valid value
    alert("data "+data);
} 
else 
{
    //If data has null, blank, undefined, zero etc.
    alert("data is "+data);
}

}

LGO西里2020/03/12 12:34:05

区别是微妙的。

在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) thenoptional将是"three"字符串,但是如果您通过,doSomething(1, 2, null)则optional将是null

对于相等==和严格相等的===比较器,第一个是弱类型,而严格相等也检查值的类型。这意味着0 == "0"将返回true;while 0 === "0"将返回false,因为数字不是字符串。

您可以使用这些运营商之间要检查undefinednull例如:

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
十三老丝2020/03/12 12:34:05

如果(逻辑)检查是否为负号(!),并且您希望同时捕获JS nullundefined (因为不同的浏览器将为您提供不同的结果),则可以使用限制性较小的比较:例如:

var ItemID = Item.get_id();
if (ItemID != null)
{
 //do stuff
}

这将同时捕获nullundefined

斯丁宝儿2020/03/12 12:34:05

规范是为这些问题提供完整答案的地方。总结如下:

  1. 对于变量x,您可以:

    • null通过使用进行直接比较来检查是否===例:x === null
    • undefined通过以下两种基本方法之一检查它:与undefined直接比较typeof由于种种原因,我更喜欢typeof x === "undefined"
    • 检查它是否是其中之一,nullundefined通过使用==和依赖略为神秘的强制类型来强制x == null执行您想要的操作。

  2. ==之间的基本区别===是,如果操作数是不同类型,===则将始终返回,false==使用导致某些稍微不直观的行为的规则会将一个或两个操作数转换为相同类型如果操作数具有相同的类型(例如,两个都是字符串,例如typeof上面比较),==并且===它们的行为将完全相同。

更多阅读:

LJinJin2020/03/12 12:34:05

未定义

这意味着该变量尚未初始化。

范例:

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是布尔对象。

JinJin乐2020/03/12 12:34:05

如何检查变量是否为null或未定义

只需检查变量是否具有如下有效值:

if(variable)

如果变量不包含,它将返回true:

  • 空值
  • 未定义
  • 0
  • “”(空字符串)
  • N