js中for in 和 for each in的区别

js 中for in 和for each in的区别
两个的作用都用来遍历对象,但为什么有了for in语句了还要for each in语句呢,后来看了下for each in开发的文档,for each in是作为E4X标准的一部分在javascript 1.6中发布的,而且它不是ECMAScript标准的一部分

  • var 超毛 = {
  • 身高:"185CM",
  • 体重:"70公斤",
  • 年龄:40
  • };
  • for (var i in 超毛){
  • document.write("i = " + i + "..................超毛[i] = " + 超毛[i] + "<br>");
  • }
  • /*
  • 结果
  • i = 身高..................超毛[i] = 185CM
  • i = 体重..................超毛[i] = 70公斤
  • i = 年龄..................超毛[i] = 40
  • */
  • for each (var i in 超毛){
  • document.write("i = " + i + "..................超毛[i] = " + 超毛[i] + "<br>");
  • }
  • /*
  • 结果
  • i = 185CM..................超毛[i] = undefined
  • i = 70公斤..................超毛[i] = undefined
  • i = 40..................超毛[i] = undefined
  • */
var 超毛 = {
    身高:"185CM",
    体重:"70公斤",
    年龄:40
};
for (var i in 超毛){
    document.write("i = " + i + "..................超毛[i] = " + 超毛[i] + "<br>");
}
/*
结果
i = 身高..................超毛[i] = 185CM
i = 体重..................超毛[i] = 70公斤
i = 年龄..................超毛[i] = 40
*/
for each (var i in 超毛){
    document.write("i = " + i + "..................超毛[i] = " + 超毛[i] + "<br>");
}
/*
结果
i = 185CM..................超毛[i] = undefined
i = 70公斤..................超毛[i] = undefined
i = 40..................超毛[i] = undefined
*/

注意变量i的值是不一样的,for each in无法获得对象的属性名,只能获取到属性值

如果你想遍历对象,超毛建议还是使用for in
1,for in在遍历对象伤还是比for each in功能更加强大for in不仅能遍历处所有属性名和属性值,for each in只能遍历出属性值
2,for in是javascript 1.0就出来的语法,for each in是javascript 1.6才出来的语法,很多浏览器是 不u支持的,比如IE6,7,8是不支持的,所以还是推荐使用for in

同时两者都能实现对数组的遍历
建议大家在遍历数组时,推荐不要使用for in语句和for each in语句,因为它们两无法保证遍历数组的顺序,还是老老实实使用for语句比较好

转载于:https://www.cnblogs.com/hanliuzhe/archive/2012/12/18/2822732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值