zoukankan      html  css  js  c++  java
  • javascript中的null和undefined

    简言之:

    udefined代表没有赋值的基本数据类型。

    null代表没有赋值的引用数据类型。

    以上两句话是别人的总结,我理解的是:null如果是一个引用变量的值(因为也可以直接把一个非引用变量设为null),有两种情况,一种是引用变量指向的对象不存在,这时会返回null;一种是将引用变量设为null,也就是说不指向任何对象,这时已存在的对象会被自动回收

    eg1:

    var p=document.getElementById("p");//假设p不存在
    alert(p);//指向的对象不存在,返回null

    eg2:

    var p=[2,3,4];
    p=null;

    alert(p);//对象(数组)还在,但是没有引用指向它,也就无法对它进行操作,会被自动回收机制回收,释放掉内存

    该死的笔试题:

    typeof(null);//object,理解为null代表无值的引用

    typeof(undefined);//undefined,规定,死记

    alert(null==undefined);//true

    alert(null===undefined);//false

    alert(123+null);//123

    alert(null+123);//123

    undefined参与任何数值计算时,其结果一定是NaN。

    关于预解析:

    关于预解析(构造执行上下文):当代码加载入浏览器后,就会对全部代码进行一次'扫描',这个'扫描'的过程就是预解析的过程,这个时候会将所有声明的变量赋于undefined值。然后再从上到下执行代码。
    看一个示例:
    var a = 'hello world';
    alert(a);
    当浏览从载入到执行会经过如下过程:
    载入代码,并进行预解析,此时会将a的值设为undefined
    从上到下执行代码,当执行到var a='hello world'时,此时才会真正为a赋于'hello world'值。执行到alert(a);时,弹出窗口hello world.
    也正是由于这个过程,解释了预解析会混淆undefined,如:
    var a;
    var b = undefined;
    其实际执行时为:
    var a = undefined;
    var b = undefined;
    b = undefined;
    所以说无法判断a与b定义时的不同。

    以上参考:@笨蛋的座右铭

  • 相关阅读:
    Hive:ORC File Format存储格式详解
    tmpfs使用探讨
    Autofs自动挂载探讨
    新建swap分区的规划、挂载和自动挂载示例
    Linux下禁止使用swap及防止OOM机制导致进程被kill掉
    Linux Swap交换分区探讨
    Linux下配置nfs并远程挂载实战探讨
    java.util.NoSuchElementException问题定位
    spark推测执行的坑
    Spark的性能调优杂谈
  • 原文地址:https://www.cnblogs.com/zye3511237/p/3399543.html
Copyright © 2011-2022 走看看