js 循环 for in

背景:由于对 for in 不熟悉,只在数组循环的时候使用过,在一次用 for in 遍历 json 数组的时候,调试看到是按照数组中字符逐个遍历,由于当时急,以为 for in 有什么不安全的地方,根本没来得及看,果断用 for 循环。后来想想,应该是当时没有将返回的结果反序列化,拙~~~。(后来写for 的时候应该是加了反序列化)。

1.   for in 可循环遍历数组、对象(非数组对象上遍历也称枚举)、字符串:

var str = "test";

var obj = {a : 'a', b : 'b'};

var arr = [1, 2, 3, 4];

// 字符串:按序逐个输出字符

for(var ele in str) {
    alert(str[ele]);
}
// 对象
for(var ele in obj){
    alert(obj[ele]);
}
// 数组
for(var ele in arr){
    alert(arr[ele]);
}

2. for in 不会按照属性下标输出

var data = {
      '4': 'first',
    '3': 'second',
      '2': 'third',
      '1': 'fourth'
  };
  for (var i in data) {
    console.log(i + "  " + data[i])
  }

输出结果:

1  fourth
2  third
3  second
4  first

注:按照网上描述,如今所有浏览器的最新版本现在都按chrome的标准执行,先把当中的非负整数键提出来,排序好输出,然后将剩下的定义时的顺序输出。所以,在定义对象的时候,最好不要以纯数字定义键名

3. for in 循环访问的是循环对象的原型

var array=[1,2,3,4,5];
Array.prototype.age=6;
var result = [];
for(var i=0;i<array.length;i++){
    result.push(array[i]);
}
alert(result.join(''));

输出结果:12345;

var array=[1,2,3,4,5];
Array.prototype.age=6;
var result = [];
for(var i in array){
    result.push(array[i]);
}
alert(result.join(''));

输出结果:123456

注 : 在数组遍历的时候,其实最好不要用 for in,for in 会访问该对象的原型,查看其原型下是否有属性,会增加循环额外的压力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值