2011-04-27 29 views
6
myObj.FirstName = 'Phillip', 
myObj.LastName = 'Senn'; 
for (var X in myObj) // FirstName LastName 
for each (var X in myObj) // Phillip Senn 

問:精神上,你如何閱讀這兩個陳述?每個在JavaScript中的含義是什麼?

+0

IE8不支持 '每個'。那麼IE9呢? – Hoque 2011-04-27 02:48:00

回答

7

第一個(for (in))正在讀取對象的屬性名稱。

因此,您可以將其作爲讀取爲myObj中的每個房產,將其分配給x

第二個(for each (in))正在讀取對象中屬性的值。

這一個可以在myObj被理解爲每個屬性的值,將其分配給x

請注意,for each瀏覽器支持有限。

另請注意,如果在for (in)中出現額外的屬性,這是因爲它會查找額外枚舉屬性的原型鏈(例如,某人可能增加了Object)。

你可以...

for (var x in myObj) { 
    if (! myObj.hasOwnProperty(x)) { 
     continue; 
    } 
    // Now you are sure the property is of `myObj` 
} 

jsFiddle緩解此。

1

for (var a in b)是獲得給定數組b的索引a的一種方法。當我在閱讀代碼時自言自語時,我通常會說「對於myObj中的每個X」。

如果您使用each關鍵字,您將檢索myObj中的對象(或數組)的值。如果你忽略它,myObj將包含鍵(或數組索引)。

+0

'for(in)'應該避免''數組''。 – alex 2011-04-27 02:37:52

+0

這對於關聯數組很有用。 – 2011-04-27 02:39:20

+0

JavaScript實際上並沒有關聯數組,只是可以設置其屬性的Object。 – alex 2011-04-27 02:41:27

1

for(var X in myObj)

對於每一個(鍵)MyObj中

for each(var X in myObj)

對於MyObj中每個成員成員,通過名稱得到其數值

1

for迭代obj的屬性而for each迭代通過屬性的值。

for each上MDN

相關問題