浅谈javascript中for循环和for...in循环的区别

     在博客园上面注册的账号已经有七个月了,七个月的时间里一直在博客园上面看大家发的技术文档或者自己的想法,感觉自己还是挺有收获的。也一直想要写出高质量的博文来,但是这东西感觉没有积累没有沉淀是写不出来的,越急就越写不出来,越担心犯错也越写不出来,犯错了与其自己心里憋着难受还不如写出来,希望大家多多指点。好了,废话不多说了,切入主题。

    最近在学习javascript的知识,在学习的过程中发现javascript中的for循环和for...in循环还是有些区别的,比如定义一个数组,然后用for..in循环输出

var array=[1,2,3,4,5,6];
for(var s in array)
{
  console.log(s+' ');
}

 输出的结果是0 1 2 3 4 5 竟然不是输出1-6。然后又定义了个比较有区分的(姑且这么叫吧)数组

var array=['jack','marry','jackson'];
for(var s in array)
{
  console.log(s+' ');
}

 输出0 1 2 这样看起来for..in输出的是数组的索引,而不是数组内容,以前在学习C#的时候for..in输出的是数组中的原始值,而不是索引 。平时在学习javascript还是有点受C#语法的影响了,这里提出来希望和我一样的同志长点心了。

  但是如果是定义一个对象,对象中有属性,并且给属性赋初始值,那么用for..in输出的是属性名,且看下面:

var obj = new Object();
obj.name = '大象';
obj.value1 = '12';
obj.value2 = '334';
for (var items in obj) {
    console.log(items);
}

 输出的是 name、 value1、 value2。这样看来在对象中属性就相当于对象中的索引。

下附一篇文章http://www.2cto.com/kf/201311/257181.html    里面是对for..in循环会把一些类型的原型(prototype)中方法与属性给遍历出来的问题,因那篇文章讲的比较易懂,大家自己看看。

PS:这是我的第一篇博文,刚开始写的时候手生,表达的也有不当的地方,欢迎大家指出。

原文地址:https://www.cnblogs.com/3sss/p/3878042.html