您的位置:首页 > Web前端 > javascript > 正文

JS脚本中Null与Undefined的区别

更多 时间:2013-8-15 类别:Web前端 浏览量:3299

JS脚本中Null与Undefined的区别

JS脚本中Null与Undefined的区别

JavaScript 中一共有 5 种基本类型,分别是 String、Number、Boolean、Null 和 Undefined 。前 3 种都比较好理解,后面两种就稍微复杂一点。 Null 类型只有一个值,就是 null ; Undefined 类型也只有一个值,即 undefined 。 null 和 undefined 都可以作为字面量(literal)在 JavaScript 代码中直接使用。

null 与对象引用有关系,表示为空或不存在的对象引用。当声明一个变量却没有给它赋值的时候,它的值就是 undefined 。

 

一、undefined 的值会出现在如下情况:

1、从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined 。


2、一个 function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined 。有一个特例就是在使用new的时候。


3、JavaScript 中的 function 可以声明任意个形式参数,当该 function 实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形式参数的值为 undefined 。

 

二、下面通过一段代码说明两者的区别

 

  •  
  • JScript 代码   复制
  • 
    //这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。
    
    var oValue;   
    alert(oValue == undefined); //output "true"
     
    
    //当页面上不存在id为"notExistElement"的DOM节点时,这段代码显示为"true",因为我们尝试获取一个不存在的对象
    
     alert(null == document.getElementById('notExistElement'));   
     
    //第一行代码很容易理解,undefined的类型为Undefined;
      //第二行代码却让人疑惑,为什么null的类型又是Object了呢?其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。
    
    alert(typeof undefined); //output "undefined"   
    alert(typeof null); //output "object"   
    
    //ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。
    
    alert(null == undefined); //output "true"   
    
    
    //如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。
    //使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。
    
    alert(null === undefined); //output "false"   
    alert(typeof null == typeof undefined); //output "false"   
    
    
    		
  •  

    您可能感兴趣