有个疑问解答下

来源:7-7 编程练习

vivi_li

2020-04-29 17:45:32

请检查下正确与否,另外有个疑问  这个封装函数没有设置返回值,是如何打印出来了s,是因为外面设置了s是全局变量么

<script>
   // 此处补充代码
   var s = "";
   function travel(space, node) {
       if(node.tagName){
           s += space+ node.tagName+"<br>";
       }
       for(var i = 0;i<node.childNodes.length;i++){
           travel(space+"*",node.childNodes[i]);
       }
   }
   travel(" *",document);
   document.write(s);
</script>

写回答

3回答

好帮手慕粉

2020-04-30

同学 你好,是的,第一次传入的是document,它没有标签名,所以不会进入if语句里面,会向下执行for循环,遍历它的子节点:

http://img.mukewang.com/climg/5eaa6c32091c952c06390323.jpg

祝学习愉快~

0

好帮手慕粉

2020-04-30

同学你好,document是一个对象,它没有标签名的,每个载入浏览器的 HTML 文档都会成为 document 对象,document 对象只是可以使我们从脚本中对 HTML 页面中的所有元素进行访问。

祝学习愉快~

0
hivi_li
h 可是这个函数传入的node 不是document么?
h020-04-30
共1条回复

好帮手慕粉

2020-04-29

同学你好,关于同学的问题回答如下:

1、代码实现的是正确的。

2、是的,因为s是定义在全局的,然后在调用函数时,对s进行了拼接:

http://img.mukewang.com/climg/5ea96593096386f806790343.jpg

祝学习愉快~

0
hivi_li
h 另外 还有个疑问 为什么我直接调用 documen.tagName,返回值是undifined?
h020-04-29
共1条回复

0 学习 · 40143 问题

查看课程