js 中for in 和foreach in的區別
兩個的做用都用來遍歷對象,但爲何有了for in語句了還要foreach in語句呢,後來看了下foreach in開發的文檔,foreach in是做爲E4X標準的一部分在javascript 1.6中發佈的,並且E4X不是ECMAScript標準的一部分。javascript
foreach…in語句已被廢棄,E4X中的大部分特性已被刪除,但考慮到向後兼容,foreach…in只會被禁用而不會被刪除,可使用ES6中新的for…of語句來代替。java
var 小青年 = { 身高:"181CM", 體重:"62公斤", 年齡:23 }; for (var i in 小青年){ document.write("i = " + i + "..................小青年[i] = " + 小青年[i] + "<br>"); } /* 結果 i = 身高..................小青年毛[i] = 181CM i = 體重..................小青年[i] =62公斤 i = 年齡..................小青年[i] = 23 */ foreach (var i in 小青年){ document.write("i = " + i + "..................小青年[i] = " + 小青年[i] + "<br>"); } /* 結果 i = 181CM..................小青年[i] = undefined i = 62公斤..................小青年[i] = undefined i = 23..................小青年[i] = undefined */
注意變量i的值是不同的,for each in沒法得到對象的屬性名,只能獲取到屬性值數組
若是你想遍歷對象,建議仍是使用for in
1,for in在遍歷對象傷仍是比for each in功能更增強大for in不只能遍歷處全部屬性名和屬性值,foreach in只能遍歷出屬性值
2,for in是javascript 1.0就出來的語法,foreach in是javascript 1.6纔出來的語法,不少瀏覽器是 不支持的,好比IE6,7,8是不支持的,因此仍是推薦使用for in瀏覽器
同時二者都能實現對數組的遍歷
建議你們在遍歷數組時,推薦不要使用for in語句和for each in語句,由於它們兩沒法保證遍歷數組的順序。