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定义时的不同。

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

  • 相关阅读:
    js正则表达式,判断字符串是否以数字组结尾,并取出结尾的数字
    js中的正则表达式入门
    jQuery获取元素对象本身的html
    正则表达式,求判断字符串是否以数字组结尾,并取出结尾的数字 正则表达式
    行为树的设计与实现
    BMFONT 字体制作
    VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
    XCODE修改IOS应用的名称
    Xcode 生成 ipa包
    Xcode 打包 ipa 包
  • 原文地址:https://www.cnblogs.com/zye3511237/p/3399543.html
Copyright © 2011-2022 走看看