Javascript 中 null、NaN和undefined的區別

1.類型分析:javascript

js中的數據類型有undefined,boolean,number,string,object等5種,前4種爲原始類型,第5種爲引用類型。java

代碼:程序員

var a1;
var a2 = true;
var a3 = 1;
var a4 = "Hello";
var a5 = new Object();
var a6 = null;
var a7 = NaN;
var a8 = undefined;

alert(
typeof a);   //顯示"undefined"
alert(typeof a1); //顯示"undefined"
alert(typeof a2); //顯示"boolean"
alert(typeof a3); //顯示"number"
alert(typeof a4); //顯示"string"
alert(typeof a5); //顯示"object"
alert(typeof a6); //顯示"object"
alert(typeof a7); //顯示"number"
alert(typeof a8); //顯示"undefined"數組


從上面的代碼中能夠看出未定義的值和定義未賦值的爲undefined,null是一種特殊的object,NaN是一種特殊的number。函數

2.比較運算測試

代碼:spa

var a1;        //a1的值爲undefined
var a2 = null;
var a3 = NaN;

alert(a1 
== a2); //顯示"true"
alert(a1 != a2); //顯示"false"

alert(a1 
== a3); //顯示"false"
alert(a1 != a3); //顯示"true"

alert(a2 
== a3); //顯示"false"
alert(a2 != a3); //顯示"true"

alert(a3 
== a3); //顯示"false"
alert(a3 != a3); //顯示"true" code


從上面的代碼能夠得出結論:(1)undefined與null是相等;(2)NaN與任何值都不相等,與本身也不相等。對象

JavaScript undefined 屬性ip

定義和用法

undefined 屬性用於存放 JavaScript 的 undefined 值。

語法

undefined

說明

沒法使用 for/in 循環來枚舉 undefined 屬性,也不能用 delete 運算符來刪除它。

undefined 不是常量,能夠把它設置爲其餘值。

當嘗試讀取不存在的對象屬性時也會返回 undefined。

提示和註釋

< 值等價於 undefined 運算符認爲 運算來測試某個值是不是未定義的,由於="=" ="==">

< 表示無值,而>

實例

在本例中,咱們將檢測兩個變量中未定義的一個:

<script type="text/javascript">var t1=""var t2if (t1===undefined) {document.write("t1 is undefined")}if (t2===undefined) {document.write("t2 is undefined")}</script> 輸出:
t2 is undefined

[補充]
Null 數據類型 
在 Jscript 中數據類型 null 只有一個值:null。關鍵字 null 不能用做函數或變量的名稱。 

包含 null 的變量包含「無值」或「無對象」。換句話說,該變量沒有保存有效的數、字符串、boolean、數組或對象。能夠經過給一個變量賦 null 值來清除變量的內容。 

請注意,在 Jscript 中,null 與 0 不相等(與在 C 和 C++ 中不一樣)。同時應該指出的是,Jscript中 typeof 運算符將報告 null 值爲 Object 類型,而非類型 null。這點潛在的混淆是爲了向下兼容。 

Undefined 數據類型 
以下狀況使返回 undefined 值: 

對象屬性不存在, 
聲明瞭變量但從未賦值。 
注意不能經過與 undefined 作比較來測試一個變量是否存在,雖然能夠檢查它的類型是否爲「undefined」。在如下的代碼範例中,假設程序員想測試是否已經聲明變量 x : 

// 這種方法不起做用 
if (x == undefined) 
    // 做某些操做 
// 這個方法一樣不起做用- 必須檢查 
// 字符串 "undefined" 
if (typeof(x) == undefined) 
    // 做某些操做 
// 這個方法有效 
if (typeof(x) == "undefined") 
    // 做某些操做 
考慮將 undefined 值與null作比較。 

someObject.prop == null; 
以下狀況時,比較的結果爲 true, 

若是屬性 someObject.prop 包含 null 值, 
若是屬性 someObject.prop 不存在。 
要檢查一個對象屬性是否存在,可使用新的 in 運算符: 
if ("prop" in someObject) 
// someObject 有屬性 ’prop’ 

在JavaScript中,null與undefined一度令人迷惑。下面的分析,有利於你更清晰的認知它(或者讓你更迷惑): 

- null是關鍵字;undefined是Global對象的一個屬性 

- null是對象(空對象, 沒有任何屬性和方法);undefined是undefined類型的值。試試下面的代碼: 

       document.writeln(typeof null); //return object 
       document.writeln(typeof undefined); //return undefined 

- 對象模型中,全部的對象都是Object或其子類的實例,但null對象例外: 
       document.writeln(null instanceof Object); //return false 

- null「等值(==)」於undefined,但不「全等值(===)」於undefined: 
       document.writeln(null == undefined); //return true 
       document.writeln(null === undefined); //return false 

- 運算時null與undefined均可以被類型轉換爲false,但不等值於false: 
       document.writeln(!null, !undefined); //return true,true 
       document.writeln(null==false); //return false 
       document.writeln(undefined==false); //return false
相關文章
相關標籤/搜索