老哥们,解释一下逻辑关系?

(function () {
    var s="";
    function traver(space,node) {
        if(node.tagName){ // 如果存在标签名,则不是空白节点
            s += space + node.tagName+ '<br/>';// 记录标签名称,以空格区分
        }
        var len=node.childNodes.length;//判断该节点子节点的长度
        for(var i=0;i<len;i++){// 遍历该节点的子节点
            traver(space +"|-",node.childNodes[i]);
        }
    }
    traver("",document);
    document.write(s);
})();

打印结果

|-HTML
|-|-HEAD
|-|-|-META
|-|-|-TITLE
|-|-|-SCRIPT
|-|-BODY
|-|-|-DIV
|-|-|-|-UL
|-|-|-|-|-LI
|-|-|-|-|-LI
|-|-|-|-|-LI
|-|-|-SCRIPT


我刚开始传入的参数,是"" 和document,第一次打印出来的为什么不是HTML 而是 |-HTML,老哥们解释一下逻辑关系?



Coding青天
浏览 1699回答 3
3回答

什么鬼_呀你

if里面根据传入参数,得出为undefinded,什么都不打印出,然后遍历该节点子元素且作为参数传入当前方法,再进行if判断,然后就打印出以上结果了。也可以f12设置断点,查看执行顺序!

林逸舟丶

一张图告诉你答案

清书入

开始传入的参数是"" 和document,if里即为document.tagName
打开App,查看更多内容
随时随地看视频慕课网APP