• 关于undefined,null,NaN,以及引用值的一点小记


    在JavaScript中,undefined以及null同样是表示空值(没有实际意义)。

        undefined == null;
    

    事实上,上面这段代码的返回结果也是true,然后他们俩有什么区别吗,首先是语义上面的区别,undefind在JavaScript中表示的是已经声明了,但是没有赋值,相当于是对只是被声明了的状态的表示,是的没错,我更愿意把他理解为一种状态,而null就更像是一个值了,他表示的就是一个空,就是啥都没有,实际上也是一种状态(至少我是这么理解的)。
    NaN也是一个比较有趣的值。

    在执行自比较之中:NaN,也只有NaN,比较之中不等于它自己。

    我的理解是他是一种表示错误的值,他的存在就是为了表示JavaScript中数值的运算错误。就像当于是在遇到数值运算的错误时,不终止程序的执行(对,我们的JavaScript真真的是个老好人),只是把这个错误作为一个值抛出来
    最后再讲一下子引用值,和原始值不同,我们是没有办法直接访问到他的,我们只能通过一个指针来访问引用值,引用值类型有Funtion Object Array这三种,在引用值的比较,他并没有去找到指针所指的原始值然后在进行比较,而是比较这个指针(怎么这次就不去找指针所指的值了呢)。
    所以即使是有时候我们把两个引用值来进行比较,即使这两个值是相等的,但是应用的指针不是同一个,所以比较的时候还是还反悔false.

        obj1 = {};
        obj2 = {};
        if(obj1 === obj2) {
            console.log("true");
        }
        else {
            console.log("false");
        }
    

    这里的结果看起来应该是true对吧,但是他的实际结果是false,原因就是因为,这里的比较不是比较的那个存储空间所存储的值,而是比较的那个存储空间的位置(也就是那个指针)。
    但是吧对于{} === {}的返回值却是false,这里还是有一点以后。。。

  • 相关阅读:
    postman(十一):添加cookie
    基于百度通用翻译API的一个翻译小工具
    python之做一个简易的翻译器(二)
    python之做一个简易的翻译器(一)
    如何查看linux服务器内存使用情况
    linux下查看进程id时用到的命令
    python日志模块的使用
    (二十九)c#Winform自定义控件-文本框(二)-HZHControls
    (二十八)c#Winform自定义控件-文本框(一)-HZHControls
    (二十七)c#Winform自定义控件-多输入窗体-HZHControls
  • 原文地址:https://www.cnblogs.com/freesfu/p/10095566.html
Copyright © 2020-2023  润新知