• null与undefined的区别


    null和undefined是JavaScript五种基本数据类型中的两种。

    null是一个特殊值,但我们常常误解它,有时候我们会把它和另一个数据类型undefined的含义互相混淆。

    首先我们来了解一下null这个特殊值会使用在哪些场景以及它代表着什么样的含义?

    1.用来初始化一个变量,这个变量可能赋值为一个对象。看着可能有点懵逼,我们结合代码来解析一下。如下:

    var person = null;

    //也就是说上面那句话可以这么理解:声明一个变量,初始化这个变量的变量值为null,这个变量可能是一个对象。

    2.用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。同样我们结合代码来解析一下。如下:

    var person = getPerson();

    if ( person !== null){

    doSomething();

    }

    看完代码是不是就一目了然了?原理是为代码做铺垫的,万事离不开代码,所以理解不了原理,我们就结合代码来理解。当你知道代码你却不知道它的原理,当你知道它的原理却不知道它的代码。所以小刘就建议大家用原理+代码来理解和学习。

    3.当函数的参数为对象时,用作参数传入。


    function doSomething (arg1){

    if(arg1===Object ){

    arg1=null;

    }

    }

    4.当函数的返回值是对象时,用作返回值传出。

    function getPerson(){

    if (condition){

    return new Person("KobeBryant");

    }else{

    return null;

    }


    }

    其次,当我们知道了null的使用场景,是不是也得知道在什么样的场景是不应当使用null的呢?

    1.不要使用null来检测是否传入了某个参数。

    function doSomething (arg1,arg2,arg3,arg4) {

    if (arg2 !==null ){

    doSomethingElse();

    }

    }

    2.不要用null来检测一个未初始化的变量。


    var person;

    if ( person !== null){

    doSomething();

    }

    //用来和未初始化的变量作比较

    看了上面的讲解,是不是瞬间秒懂并掌握,如果对您有帮助,请点个赞,如果哪里不够好,请互相学习,可以评论下,我们交流下~

    我们继续学习,接下来来对undefined这个莫名其妙的东西进行解析。

    同null一样,undefined也是一个特殊值,它是那些被声明了却未初始化的变量,即undefined,等待被赋值;

    如:var person;

     console(person === undefined);//输出为true

    虽然这段代码能够正常工作,但是还是避免在代码中使用undefined,因为不管声明了变量还是未声明的变量,typeof运算结果都能返回一个undefined值。

    如:var person;

    console(typeof person);//输出值为undefined;

    console(typeof foo);//输出值为undefined;

    在语句中,未声明的变量是会报错的,通过禁用特殊值undefined,可以有效的确保只在一种情况下typeof才会返回undefinedl:那就是当变量未声明时;如果使用了一个可能赋值为一个对象的变量时,则将其赋值为null;将变量初始化赋值为null表明了这个变量的意图,它最终很可能赋值为对象。typeof运算符运算null的类型时返回Object,这样就可以和undefined区分开了。

    如:console(null ==undefined);//输出值为true

    var person=null;

    console(typeof null);//输出值为object
    ---------------------
    作者:111111111188888888
    来源:CSDN
    原文:https://blog.csdn.net/DreamsTom/article/details/53888829
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Java——异步调用
    GTK3-demo 代码调用
    ef core code first 生成的数据库表去复数的方法
    nuxt全局挂载导航路由守卫
    vue导入,导出,列表展示excel数据
    JS之blob对象下载文件,解决word可能打开是乱码,xlsx文件打不开,图片显示格式不支持等问题
    程序猿的十一条浮躁表现
    RSA加密解密及加签验签
    冒泡排序
    Failed to parse source for import analysis because the content contains invalid JS syntax
  • 原文地址:https://www.cnblogs.com/Antwan-Dmy/p/10716762.html
Copyright © 2020-2023  润新知