有个疑问解答下

有个疑问解答下

请检查下正确与否,另外有个疑问  这个封装函数没有设置返回值,是如何打印出来了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回答

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

http://img1.sycdn.imooc.com//climg/5eaa6c32091c952c06390323.jpg

祝学习愉快~

好帮手慕粉 2020-04-30 10:48:25

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

祝学习愉快~

  • 提问者 vivi_li #1
    可是这个函数传入的node 不是document么?
    2020-04-30 10:51:10
好帮手慕粉 2020-04-29 19:31:35

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

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

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

http://img1.sycdn.imooc.com//climg/5ea96593096386f806790343.jpg

祝学习愉快~

  • 提问者 vivi_li #1
    另外 还有个疑问 为什么我直接调用 documen.tagName,返回值是undifined?
    2020-04-29 21:35:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师