js 中for in 和foreach in的區別
兩個的作用都用來遍歷對象,但為什么有了for in語句了還要foreach in語句呢,后來看了下foreach in開發的文檔,foreach in是作為E4X標准的一部分在javascript 1.6中發布的,而且E4X不是ECMAScript標准的一部分。
foreach…in語句已被廢棄,E4X中的大部分特性已被刪除,但考慮到向后兼容,foreach…in只會被禁用而不會被刪除,可以使用ES6中新的for…of語句來代替。
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語句,因為它們兩無法保證遍歷數組的順序。