美文网首页
不积跬步之undefined和null的区别

不积跬步之undefined和null的区别

作者: 雨飞飞雨 | 来源:发表于2019-08-25 15:00 被阅读0次

    JavaScript中有7种数据类型,Undefined,Null,Boolean,Number,String,ObjectSymbol.undefinednull是其中两个的数据类型的值。我们先看Undefined

    Undefined 类型

    Undefined类型只有一个值,即特殊的undefined。在使用let,const,var声明变量但未对其加以赋值进行初始化时,这个值就是undefined

    let message;
    console.log(message === undefined);//true
    

    在上面的例子里,变量声明了,但是没有初始化就会是undefined

    let message = undefined;
    console.log(message === undefined);//true
    

    在上面的例子里我们显示的声明了变量的值是undefined,结果比较相同。

    一般而言,我们并没有必要进行上面的操作。不过没有初始化的值和未声明的变量还是有区别的。

    let message;//变量声明了,默认的初始化值就是undefined
    // let age;
    
    console.log(message);//undefined
    console.log(age);//报错
    

    上面的例子里,我们声明了变量message,然后打印,结果是undefined。而age我们并没有声明,结果报错了。

    然而我们通过typeof来进行类型判断时,两种变量都是undefined

    let message;//
    // let age;
    console.log(typeof message);//undefined
    console.log(typeof age);//undefined
    

    在<JavaScript高级程序设计>一书中,这里这样解释:对未初始化和未声明的变量执行typeof操作符都返回了undefined。但是这个结果有其逻辑上的合理性。因为虽然这两种声明从技术角度看有本质区别。但实际上无论对哪种变量也不可能执行真正的操作。

    undefined这个值的引入是为了正式区分空对象指针与未经初始化的变量!

    Null类型

    Null类型是第二个只有一个值的数据类型。这个特殊的值就是null.从逻辑上讲,null值表示一个空对象指针,而这也正式使用typeof操作符时会返回object的原因。如下面的例子:

    let car = null;
    console.log(typeof car);//"object"
    

    如果定义的变量准备将来用于保存对象,那么最好是将该变量初始化为null.这样好比较。只要直接坚持null值就可以知道相应的变量是否已经保存了一个对象的引用。

    if(car !== null){
        //dosomething
    }
    

    实际上undefined值是派生于null的值。因此ECMA-262规定对它们的相等性测试要返回true。当然是两个==,不是严格等于。

    console.log(undefined == null);//true
    

    现在知道它们的区别了吗?

    1. undefined是为初始化的变量。
    2. null是一个空对象指针.typeof null //"object"
    3. undefined值是派生于null的值

    相关文章

      网友评论

          本文标题:不积跬步之undefined和null的区别

          本文链接:https://www.haomeiwen.com/subject/rtnhectx.html