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的值。

  • 相关阅读:
    修改CentOs开机启动时的timeout
    各种快捷键
    测试实例异常
    测试实例异常
    springBoot中测试类的头注解
    学习笔记9
    stat命令的实现-mystat
    反汇编测试
    学习笔记7
    openssl截图
  • 原文地址:https://www.cnblogs.com/load/p/2804527.html
Copyright © 2011-2022 走看看