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

  • 相关阅读:
    Longest Palindromic Substring
    PayPal MLSE job description
    Continuous Median
    Remove Duplicates From Linked List
    Valid IP Address
    Longest substring without duplication
    Largest range
    Subarray sort
    Multi String Search
    Suffix Trie Construction
  • 原文地址:https://www.cnblogs.com/load/p/2804527.html
Copyright © 2011-2022 走看看