2013-03-03 31 views
0

假設我有一個Javascript數組和一些條目定義如下:嘗試檢索一個不存在的數組條目後javascript var的狀態?

arr["rrr"]=1; 
arr["ee"]=2; 
arr["qqq"]=22; 
... 

讓我們假設一個嘗試檢索一個unexisting鍵的條目,例如:

var retr = arr["ppp"]; 

是什麼身份的retr var?是nullundefined還是別的?如何檢查數組是否不包含提供的密鑰的有效條目? Javascript中的正確測試是什麼?謝謝。

回答

1

由缺少鍵返回的值是undefined

var a = []; 
a.hasOwnProperty('k'); // false 
0

未定義數組鍵的返回值是undefined。正確的測試將是

var retr = arr["ppp"]; 
if(retr!=undefined){ 
    //retr has some value 
} 
else{ 
    //retr is undefined 
} 
+1

號與'ARR =試用{PPP:假}如果密鑰存在這樣可以測試' – Bergi 2013-03-03 12:48:37

+1

......和你的編輯後,用'ARR =嘗試{PPP:未定義}' – Bergi 2013-03-03 12:56:57

-1

我試過你在Firebug中編寫的代碼。當我試圖訪問一個條目時提供一個不存在的密鑰

var retr=arr["ppp"]; 

它返回null。因此,retr等於null。

retr==null; //true 
typeof retr=="undefined"; //true 
+0

'null!== undefined' – Bergi 2013-03-03 12:49:01

+0

你是什麼意思? – haitaka 2013-03-03 12:50:20

+0

它不返回'null',它返回'undefined'。這是一個不同的價值。 – Bergi 2013-03-03 12:51:21

2

結果未定義。 要測試你只需要做到這一點:

if ("ppp" in arr) { 
    // do something 
} else { 
// do something else 
} 
相關問題