1. 程式人生 > >關於javsacript中 for in遍歷物件

關於javsacript中 for in遍歷物件

1、關於for in語法

for ...  in語法主要用於遍歷陣列中的元素,或者遍歷物件中的元素。 當使用for ... in 遍歷物件屬性時,原型鏈上的所有屬性都將被遍歷。

2、關於Object屬性名

通常講,javascript標示符名稱必須由字母,下劃線(_)或dolor符號 ($)開始,其他字元可以時字母,數字,下劃線或dolor,但識別符號不能時javascript關鍵字。 對於物件屬性名,我實驗的結果是: 物件屬性名可以是1:下劃線開始的字串;2:陣列開始的字串;3:漢字;4:以上識別符號規定範圍內的字串。

3、關於for in的一個坑

一般而言,我們使用for ... in迴圈遍歷陣列時,比如
var arr = [1,2,3,4];
for (var k in arr){
    alert(arr[k])
}

結果是依次彈出1、2、3、4。 同樣,我們自然的認為for ... in遍歷Object時也是按照屬性出現的順序來查詢。就像下 main的程式碼:
var o = {
    'first':'first',
    'second':'second',
    'third':'third'
}

for (var k in o){
    alert(o[k])
}

會依次彈出‘first’,‘second’,‘third’。 這當然沒錯,不過,再試試下面的程式碼:
var o = {
    '01':'1',
    '2':'2',
    '今天':3
}

for (var k in o){
    alert(o[k])
}

結果怎樣?2,1,3對不對? 這一次迴圈不是按照屬性出現的瞬息來查詢的。 這些程式碼在多種瀏覽器都出現一直都結果。我想大概時因為“Object是無序”來解釋。