Javascript 中 null、NaN和undefined的區(qū)別總結(jié)
1.類(lèi)型分析:
js中的數(shù)據(jù)類(lèi)型有undefined,boolean,number,string,object等5種,前4種為原始類(lèi)型,第5種為引用類(lèi)型。
代碼
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.比較運(yùn)算
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"
從上面的代碼可以得出結(jié)論:(1)undefined與null是相等;(2)NaN與任何值都不相等,與自己也不相等。
JavaScript undefined 屬性
定義和用法
undefined 屬性用于存放 JavaScript 的 undefined 值。
語(yǔ)法
undefined
說(shuō)明
無(wú)法使用 for/in 循環(huán)來(lái)枚舉 undefined 屬性,也不能用 delete 運(yùn)算符來(lái)刪除它。
undefined 不是常量,可以把它設(shè)置為其他值。
當(dāng)嘗試讀取不存在的對(duì)象屬性時(shí)也會(huì)返回 undefined。
提示和注釋
< 值等價(jià)于 undefined 運(yùn)算符認(rèn)為 運(yùn)算來(lái)測(cè)試某個(gè)值是否是未定義的,因?yàn)?"=" ="==">
< 表示無(wú)值,而>
實(shí)例
在本例中,我們將檢測(cè)兩個(gè)變量中未定義的一個(gè):
<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> 輸出:
[補(bǔ)充]Null 數(shù)據(jù)類(lèi)型
在 Jscript 中數(shù)據(jù)類(lèi)型 null 只有一個(gè)值:null。關(guān)鍵字 null 不能用作函數(shù)或變量的名稱。
包含 null 的變量包含“無(wú)值”或“無(wú)對(duì)象”。換句話說(shuō),該變量沒(méi)有保存有效的數(shù)、字符串、boolean、數(shù)組或?qū)ο?。可以通過(guò)給一個(gè)變量賦 null 值來(lái)清除變量的內(nèi)容。
請(qǐng)注意,在 Jscript 中,null 與 0 不相等(與在 C 和 C++ 中不同)。同時(shí)應(yīng)該指出的是,Jscript中 typeof 運(yùn)算符將報(bào)告 null 值為 Object 類(lèi)型,而非類(lèi)型 null。這點(diǎn)潛在的混淆是為了向下兼容。
Undefined 數(shù)據(jù)類(lèi)型
如下情況使返回 undefined 值:
對(duì)象屬性不存在,
聲明了變量但從未賦值。
注意不能通過(guò)與 undefined 做比較來(lái)測(cè)試一個(gè)變量是否存在,雖然可以檢查它的類(lèi)型是否為“undefined”。在以下的代碼范例中,假設(shè)程序員想測(cè)試是否已經(jīng)聲明變量 x :
// 這種方法不起作用
if (x == undefined)
// 作某些操作
// 這個(gè)方法同樣不起作用- 必須檢查
// 字符串 "undefined"
if (typeof(x) == undefined)
// 作某些操作
// 這個(gè)方法有效
if (typeof(x) == "undefined")
// 作某些操作
考慮將 undefined 值與null做比較。
someObject.prop == null;
如下情況時(shí),比較的結(jié)果為 true,
如果屬性 someObject.prop 包含 null 值,
如果屬性 someObject.prop 不存在。
要檢查一個(gè)對(duì)象屬性是否存在,可以使用新的 in 運(yùn)算符:
if ("prop" in someObject)
// someObject 有屬性 'prop'
在JavaScript中,null與undefined一度使人迷惑。下面的分析,有利于你更清晰的認(rèn)知它(或者讓你更迷惑):
- null是關(guān)鍵字;undefined是Global對(duì)象的一個(gè)屬性
- null是對(duì)象(空對(duì)象, 沒(méi)有任何屬性和方法);undefined是undefined類(lèi)型的值。試試下面的代碼:
document.writeln(typeof null); //return object
document.writeln(typeof undefined); //return undefined
- 對(duì)象模型中,所有的對(duì)象都是Object或其子類(lèi)的實(shí)例,但null對(duì)象例外:
document.writeln(null instanceof Object); //return false
- null“等值(==)”于undefined,但不“全等值(===)”于undefined:
document.writeln(null == undefined); //return true
document.writeln(null === undefined); //return false
- 運(yùn)算時(shí)null與undefined都可以被類(lèi)型轉(zhuǎn)換為false,但不等值于false:
document.writeln(!null, !undefined); //return true,true
document.writeln(null==false); //return false
document.writeln(undefined==false); //return false
- js判斷undefined類(lèi)型,undefined,null, 的區(qū)別詳細(xì)解析
- JS中判斷null、undefined與NaN的方法
- JavaScript null和undefined區(qū)別分析
- JS基礎(chǔ)之undefined與null的區(qū)別分析
- JavaScript Undefined,Null類(lèi)型和NaN值區(qū)別
- 詳解JavaScript中undefined與null的區(qū)別
- js中 關(guān)于undefined和null的區(qū)別介紹
- JS中null和undefined的區(qū)別
- JavaScript中undefined和null的區(qū)別
- JavaScript中null與undefined的區(qū)別總結(jié)
相關(guān)文章
淺談js的ajax的異步和同步請(qǐng)求的問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談js的ajax的異步和同步請(qǐng)求的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
JavaScript實(shí)現(xiàn)計(jì)算字符串中出現(xiàn)次數(shù)最多的字符和出現(xiàn)的次數(shù)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)計(jì)算字符串中出現(xiàn)次數(shù)最多的字符和出現(xiàn)的次數(shù),本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03
JS獲取地址欄參數(shù)的兩種方法(簡(jiǎn)單實(shí)用)
這篇文章主要介紹了JS獲取地址欄參數(shù)的兩種方法(簡(jiǎn)單實(shí)用),小編給大家推薦使用第一種采用正則表達(dá)式獲取地址欄參數(shù)的方法,此方法簡(jiǎn)單實(shí)用,對(duì)js獲取地址欄參數(shù)相關(guān)知識(shí)感興趣的朋友,一起學(xué)習(xí)吧2016-06-06
javascript中數(shù)組(Array)對(duì)象和字符串(String)對(duì)象的常用方法總結(jié)
這篇文章主要介紹了javascript中數(shù)組(Array)對(duì)象和字符串(String)對(duì)象的常用方法,結(jié)合實(shí)例形式總結(jié)分析了javascript中關(guān)于數(shù)組和字符串的常用函數(shù)與使用技巧,需要的朋友可以參考下2016-12-12
js前臺(tái)分頁(yè)顯示后端JAVA數(shù)據(jù)響應(yīng)
js前臺(tái)分頁(yè)顯示使用jquery1.8.7框架,本文目的主要給那些剛?cè)胄熊浖_(kāi)發(fā),喜歡這也看看,程序需要有投入才有收獲感興趣的你可不要錯(cuò)過(guò)了哈,希望可以幫助到你2013-03-03
利用JavaScript做數(shù)獨(dú)的完整實(shí)現(xiàn)過(guò)程
數(shù)獨(dú)游戲是在一個(gè)9*9的方格中進(jìn)行填數(shù)字的游戲,需要滿足的規(guī)則是每行每列和每個(gè)子九宮格都是1~9的不重復(fù)數(shù)字,下面這篇文章主要給大家介紹了關(guān)于如何利用JavaScript做數(shù)獨(dú)的相關(guān)資料,需要的朋友可以參考下2021-09-09
JavaScript實(shí)現(xiàn)控制并發(fā)請(qǐng)求數(shù)量的方法詳解
這篇文章主要為大家詳細(xì)介紹了JavaScript如何實(shí)現(xiàn)控制并發(fā)請(qǐng)求數(shù)量,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02

