javascrit中undefined和null的区别

一、Undefined

  Undefined 类型只有一个值,即特殊的undefined。实际上,undefined值是继承自null值得。undefined==null 为true。 根据工做中总结,只要有这几种状况下会出现undefined。而且undefined===undefined为true

1.定义变量,可是没有初始化时,如var a;
2.调用某个函数时,实参个数小于形参个数时,未实参化的形参在函数调用过程当中的值是undefined;
3.调用某个对象尚未添加的属性时,也会返回undefined;javascript

var obj={}   
        console.log(obj.name);//undefined
复制代码

4.调用某个没有返回值的函数,也会返回undefined;java

function Person(name,age){
    		this.name=name;
    		this.age=age;
    	}
    	var p=Person("李四",23);//此时的p=undefined;
复制代码

5.对未初始化的变量执行 typeof 操做符会返回 undefined 值;
6.对未声明的变量执行 typeof 操做符一样也会返回 undefined 值。
函数

var message; // 这个变量声明以后默认取得了 undefined 值   
        //未初始化的变量
        alert(typeof message);     // "undefined"  
        //未申明的变量
        alert(typeof age);         // "undefined"   
复制代码

二、Null 类型

  是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看,null值表示一个空对象指针,要意在保存对象的变量尚未真正保存对象。而这也正是使用 typeof 操做符检测 null值时会返回"object"的缘由。null===null为true。这几种状况下会出现null的状况

一、手动设置变量的值或者对象某一个属性值为null(在初始化对象时,手动设置对象为null。在做用域中再也不须要使用某个对象时,把null赋值给那个变量解除引用,以释放内存)
二、在javascript的DOM元素获取中,若是没有获取到指定的元素对象,结果通常是null。this

var d=document.getElementById("d");
    console.log(d);//当没有id为"d"的标签时返回null
复制代码

三、Object.prototype._proto_的值也是null。(每个对象都有__proto__属性,指向对应的构造函数的prototype属性,可是由于Object是全部类的基类,其没有对应的构造函数,全部Object.prototype._proto_值为空);spa

console.log("a".__proto__);
        //指向的是String的prototype属性
        //String {"", length: 0, constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}
复制代码

四、在正则捕获的时候,若是没有捕获到结果,默认也是null。 prototype

相关文章
相关标签/搜索