zoukankan      html  css  js  c++  java
  • Javascript for循环的疑惑

    之前看很多人这样写for循环,感到很困惑,直接i<divs.length不就行了,为什么要多此一举加一个len呢?

    for(var i=0, len=divs.length; i<len; i++){

      ...
    }

    昨天晚上再看javascript高级程序设计(第二版)发现有说这个问题的,说的是迭代nodeList时会出现无限循环的问题

    例如:

    var divs = document.getElementsByTagName("div");

    for(var i=0; i<divs.length; i++){ 
      var div = document.createElement("div");
      document.body.appendChild(div);
    }

    这段代码会无限循环,那是因为divs.length会动态更新。

    divs并不是保存的一个固定的nodeList集合,当运行到i<divs.length时,divs会重新获取所有的div

    解决这个问题的方法是多加一个用于保存集合长度的len,

    for(var i=0, len=divs.length; i<len; i++){

      //len保存的是divs的一个片段,该值是固定的

      var div = document.createElement("div");
      document.body.appendChild(div);
    }

    所以为了保证代码的稳定性,for循环中length应该是保持固定的,即每次都多一个len保存length的值。

  • 相关阅读:
    ZOJ 3327 Friend Number
    ZOJ 3324 Machine
    2010-2011 ACM-ICPC, NEERC, Southern Subregional Contest C Explode 'Em All
    UVA 12594 Naming Babies
    POJ 3709 K-Anonymous Sequence
    POJ 1180 Batch Scheduling
    POJ 1160 Post Office
    HDU 3516 Tree Construction
    HDU 3045 Picnic Cows
    UVALive 5097 Cross the Wall
  • 原文地址:https://www.cnblogs.com/load/p/2804527.html
Copyright © 2011-2022 走看看