javascript两个循环里的i,很容易忽略

很简单的一段代码,但是却让我调试很久,现象是,第一个循环只执行了一次,但是节点的数量肯定不止一个,
每次都是执行了一次,然后我怀疑循环2,是否执行完就退出,或者死循环(递归)了,经调试还是没发现.

后来把第二个循环的i改成j问题解决了,也想起了一条规定,javascript里不加var定义的变量是全局的变量

i作为全局变量在循环2里就改变了值,到了循环1就不执行了

加上var也可解决,

小问题但是,很容易忽略,另外就是在递归时调用自身方法时,i的值还是原来的没有改变,

不过这种遍历的方法似乎有点落伍了,应该有更好方法,进一步学习中.........

function showElement()
{
    for (i=0; i < document.documentElement.children.length; i++)//循环1
    {
        var node = document.documentElement.children[i];
        alert(node.nodeName);
      
       if (node.hasChildNodes())
       {
        showAll(node);
       }
    }

}

function showAll(node)
{
    for (i=0; i < node.childNodes.length; i++)//循环2
    {
        alert(node.childNodes[i].nodeName);
        if (node.childNodes[i].hasChildNodes())
       {
            showAll(node.childeNodes[i]);//递归
       } 
    }
    //alert("dsagd");
}

原文地址:https://www.cnblogs.com/shenba/p/777422.html