javascript
JavaScript的undefined
?我們知道,javascript是一種泛類型的語(yǔ)言。泛類型意味著不必顯式定義變量的數(shù)據(jù)類型。事實(shí)上,我們無(wú)法在 javascript 上明確地定義數(shù)據(jù)類型。而只能通過(guò)var語(yǔ)句顯示聲明變量:var myvar;
或這樣隱式聲明變量:myvar=myvarValue(省略var,在聲明的同時(shí)初始化)。
javascript有三種基本數(shù)據(jù)類型(字符串、數(shù)值、布爾 ),兩種引用數(shù)據(jù)類型(對(duì)象、數(shù)組)和兩種特殊數(shù)據(jù)類型(Null 、Undefined )。對(duì)于基本數(shù)據(jù)類型和引用數(shù)據(jù)類型我們很好理解。對(duì)于特殊數(shù)據(jù)類型Null和Undefined,常常會(huì)引起我們的一些疑惑。
在 Javascript 中數(shù)據(jù)類型 Null 只有一個(gè)值:null。如果一個(gè)變量的值為null ,那么表示該變量沒有保存有效的數(shù)、字符串、Boolean、數(shù)組或?qū)ο?#xff0c;null與vbscript中Empty的概念不相同(Empty指未初始化的變量值)。因此,我們可以通過(guò)給一個(gè)變量賦 null 值來(lái)清除變量的內(nèi)容。
考查下面的代碼:
function test1()
{
?var a=null;
?alert("typeof(a):"+typeof(a));
?alert("a==0:"+(a==0));
}
結(jié)果顯示:typeof(null)返回的對(duì)象類型為Object,而非類型null。這點(diǎn)潛在的混淆是為了向下兼容。同時(shí),在 Javascript 中,null 與 0 不相等。
如果已聲明了一個(gè)變量但還沒有初始化,那么該變量的值就是?undefined。這與vbscript中Empty的概念是相同的。
如下情況使返回 undefined 值:?
1、對(duì)象屬性不存在;
2、聲明了變量但從未賦值。
//注意:很多人常犯的一個(gè)錯(cuò)誤是:當(dāng)他定義一個(gè)變量的時(shí)候未初始化,想當(dāng)然地認(rèn)為該變量的默認(rèn)值為數(shù)字0字符串""。
我們?cè)趈avascript中如何判斷一個(gè)變量是否存在,可以使用如下方法:
function test2()
{
?var a;
?alert(typeof(a)==undefined);//false
?alert(typeof(a)=="undefined");//true
?alert(a==undefined);//true
}
//注意:我們可以通過(guò)與undefined做比較測(cè)試一個(gè)變量是否初始化,但不能通過(guò)與 undefined 做比較來(lái)測(cè)試一個(gè)變量是否存在,而只能通過(guò)typeof(variable)=="undefined"來(lái)判斷!
下面的例子將證明我的這一提示的正確性:
function test3()
{
?var a;
?//alert(b==undefined);//出現(xiàn)錯(cuò)誤:'b'未定義
?alert(typeof(b)=="undefined");//true?
}
undefined 值與null做比較,考查下面的代碼:
總結(jié):undefined 值與null做比較,如下情況時(shí),比較的結(jié)果為?true:
1、屬性 myObj.prop1 包含null 值;
2、屬性 myObj.prop3 不存在。
3、typeof(b)=="undefined" 不存在返回true,?存在但沒初始化也返回true啊?
轉(zhuǎn)載于:https://blog.51cto.com/2301703/1056764
總結(jié)
以上是生活随笔為你收集整理的JavaScript的undefined的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中小企业如何用在线CRM留住客户
- 下一篇: SecureCrt使用技巧