zoukankan      html  css  js  c++  java
  • 关于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,这里还是有一点以后。。。

  • 相关阅读:
    面试官问我注解怎么使用?我这样告诉他
    dump 叶子节点
    dump 分支块
    设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
    EBS业务学习之应收管理
    EBS业务学习之应付管理
    EBS多组织结构
    总帐模块表结构
    iOS界面不能点击(tableView 的cell 不能使用点击事件,tableView也不能上下滚动)
    EBS业务学习之库存管理
  • 原文地址:https://www.cnblogs.com/freesfu/p/10095566.html
Copyright © 2011-2022 走看看