美文网首页
for in 循环遍历之坑

for in 循环遍历之坑

作者: 瓜田猹 | 来源:发表于2017-09-19 15:51 被阅读226次
问题描述:最近在做项目时,用for..in对元素进行遍历竟然多循环了一次,这让我百思不得其解,最后通过找资料,知道了问题所在之处

例子1:

<ul>
    <li class="condition"></li>
    <li class="condition"></li>
    <li class="condition"></li>
</ul>
<script type="text/javascript">
    for(var i in $('.condition')){
           console.log(typeof i)
           console.log(i)
      }
</script>

打印结果

i 的类型是string

i=0
i=1
i=2
i=length
i=prevObject
i=jquery
i=constructor
i=toArray
.
.
.

i的类型是string,竟然不是数字。它不仅打印出了0,1,2,还打印出length,prevObject

例子2:

<script type="text/javascript">
    var arr = [1,2,3,4];
    Array.prototype.name= "我是个bug"; //数组原型上加一个name属性
    for(var i in arr){
      console.log(i)
    }
</script>

打印结果

0 1 2 3 name
竟然把原型上的name也打印出来了
总结:
  1. for...in循环中的循环计数器(i)是字符串而不是数字,它包含当前属性的名称或当前数组元素的索引
  2. for..in循环会把某个类型的原型(prototype)中方法与属性给遍历出来,使用对象的hasOwnProperty()方法来避免这个问题
  3. for..in 循环适合遍历对象,但在遍历非对象时候可以用each()或者 for循环来遍历

参考: [JavaScript中for..in循环陷阱介绍]

相关文章

  • for in 循环遍历之坑

    问题描述:最近在做项目时,用for..in对元素进行遍历竟然多循环了一次,这让我百思不得其解,最后通过找资料,知道...

  • Python:For循环遍历列表list的坑

    前几天写了个小脚本,for循环遍历列表,但是在遍历期间对数组进行了删除元素的操作,给自己挖了坑For循环遍历时实际...

  • js 数组遍历时删除元素

    参考js在循环遍历数组中删除指定元素踩坑( foreach.. for.. for..in.. )[https:/...

  • java遍历删除集合元素的三种方法以及ConcurrentMod

    JAVA中循环遍历list有三种方式for循环、foreach循环、iterator遍历。 1、for循环遍历li...

  • 4.3 程序的循环结构

    四、程序的控制结构 4.3 程序的循环结构 遍历循环 无限循环 循环控制保留字 循环的高级用法 遍历循环 遍历某个...

  • 浅谈 for与for in的不同点

    在javasctipt里遍历是必不可少的一项重要内容, 从刚入前端坑开始,就会学到遍历的方法,就是for循环,wh...

  • js遍历方式总结

    普通for循环 只能遍历数组和字符串 普通for循环遍历字符串 普通for循环遍历对象 不能使用 普通for循环...

  • 遍历 return

    for循环遍历 enumerateObjectsUsingBlock遍历

  • Swift循环之 for-in

    Swift循环之 for-in Swift for-in循环用来遍历集合中所有元素,例如数组中元素 语法: 例如 ...

  • js 数组操作

    遍历删除元素: 遍历数组:for循环遍历: forEach遍历:

网友评论

      本文标题:for in 循环遍历之坑

      本文链接:https://www.haomeiwen.com/subject/emwujxtx.html