Javascript 中 null、NaN和undefined的區別

轉載:https://www.cnblogs.com/qiantuwuliang/archive/2010/01/12/1645302.htmljavascript

1.類型分析:html

 

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.比較運算數組

 

 

代碼

 

複製代碼
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"
複製代碼

 


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

JavaScript undefined 屬性測試

定義和用法

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

語法

undefined

說明

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

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

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

提示和註釋

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

< 表示無值,而>

實例

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

複製代碼
<script type="text/javascript">

var t1=""
var t2

if (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 
相關文章
相關標籤/搜索