代碼如下:
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>javascript之null和undefined</title>
</head>
<body>
<script type="text/javascript">
/**
******************null關鍵字********************
JavaScript中的關鍵字null是一個特殊的值,它表示“無值”。null常常被看作對象類型的一個特殊值,即代表“無對象”的值。
null是一個獨一無二的值,有別於其他所有的值。如果一個變量的值為null,那麼就說明它的值不是有效的對象、數組、數字、字符串
和布爾值 中的 任何一種。
當null用於布爾環境時,它被自動轉換為false.當它用於一個數字環境時,它被自動轉換為數字0.當它用於一個字符串環境時,它
被自動轉換為"null".
*/
var $null = null;
//用於布爾環境
if($null){
document.write("當null用於布爾環境時,不轉換");
}else{
document.write("當null用於布爾環境時,它被自動轉換為false");//此句將被輸出
}
//用於數字環境
if(0 + $null == 0){
document.write("<br/>當null用於數字環境時,它被自動轉換為0");//此句將被輸出
}else{
document.write("<br/>當null用於數字環境時,不轉換");
}
//用於字符串環境
document.write("<br/>用於字符串環境:"+$null);//null
//null的typeof:object
document.write("<br/>$null的數據類型為:"+typeof $null);//object
/**
*****************undefined******************
undefined是一個特殊的值,它不是javascript中的關鍵字。以下幾種情況需要注意:
1.使用了已經聲明但還沒有賦值的變量時
2.使用了一個並不存在的對象屬性時
以上二種情況,返回的都是undefined這個值。undefined值不同於null.
當未定義的值用於布爾環境時,它會自動轉換為false;
當它用於一個數字環境時,它會自動轉換為NaN;(NaN的解釋:NaN 屬性是代表非數字值的特殊值。該屬性用於指示某個值不是數字。
當它用於一個字符串環境時,它會自動轉換為"undefined";
*/
var $aaa;//聲明了,但沒有初始化。
var $bbb = "測試";//聲明了,並且初始化了。
var $obj = new Object();
document.write("<br/>$aaa的類型:"+typeof $aaa+"、$aaa的值:"+$aaa);//undefined、undefined
document.write("<br/>$bbb的類型:"+typeof $bbb+"、$bbb的值:"+$bbb);//string、測試
document.write("<br/>$obj的一個不存在的屬性myProp的類型:"+typeof $obj.myProp+"、$obj.myProp的值:"+$obj.myProp);//undefined、undefined
//document.write("<br/>輸出一個並未聲明的變量的值:"+$abc);//運行錯誤
/**
undefined 與 null的聯系
雖然undefined和null值不同,但是==運算符卻將兩者看作相等。
var obj = new Objec();
obj.prop == null //返回true
如果要嚴格區分undefiend和null,則需要用到====運算符或者typeof
var obj = new Objec();
obj.prop === null //返回false
typeof obj.prop //輸出undefined
typeof null //輸出object
*/
</script>
</body>
</html>