这里两个query对象不会引起变量冲突吗

这里两个query对象不会引起变量冲突吗

名字都是query,而且也搞不懂为什么一个console会打出url和/favicon.ico,我的意思是逻辑上consolelog不应该只打一个string出来吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕码 2020-08-03 17:29:42

同学你好,是有两个query的,favicon.ico这个无法执行foreach遍历,因此无法将内容放到query中,即为空。可以看下视频:

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

当query有值,符合如下的if条件,才执行if{}中的语句:

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

当不符合条件、没有值的时候,执行了end方法,因此query为空的时候,不影响后面代码的执行哦~

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

同学可以自己测试一下。祝学习愉快~

好帮手慕码 2020-08-03 16:07:10

同学你好,因为这里的服务会请求两次。第一次是请求输入的路径,例如localhost:3000/api/list/a=100&b=200;第二次是浏览器自发行为,请求网页小图标;所以会打印两次

第二次请求的是标签页的图标favicon.ico,所以第二次的querystring是undefined,因此在把querystring中每个参数存入对象前,要先使用if(querystr)判断querystring是否存在。当querystring存在,才执行foreach的遍历。

祝学习愉快~

  • 提问者 慕雪9296518 #1
    那最终结果多余出来的那个query怎么处理??是两个吧,我也搞不懂接下来的代码为什么不会报错居然还正常判断了
    2020-08-03 16:11:19
好帮手慕码 2020-08-03 13:51:05

同学你好,解答如下:

1、请问是指哪两个query对象呢?可以详细的描述下(可以截图演示)

2、/favicon.ico是浏览请求的小图片,可以理解为是浏览器自发的行为,之前在课程上有讲解,同学可以再回顾一下相关的视频:https://class.imooc.com/lesson/1383#mid=33215

祝学习愉快~

  • 提问者 慕雪9296518 #1
    可能我没说清楚,我知道/favicon.ico怎么来的,我是问只有一个console.log怎么会打印出两行东西,'/'和'/favicon.ico',当console.log(querystr = url.split('?')[1])时候,怎么会存在有两个querystr呢。可能我说的不是很清晰,但你们老师本身这一点也没讲清楚,就给个判断if(querystr)就略过了,这样最后的对象也有两个冒出来不是吗
    2020-08-03 13:57:44
  • 伽文Sama 回复 提问者 慕雪9296518 #2
    执行了两次请求,默认的附加了一个 favicon.ico的图标请求,有请求就会打印。
    2020-08-12 17:18:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
5. Node.js全栈开发
  • 参与学习           人
  • 解答问题       307    个

前端工程师会后端开发已是趋势。从node.js到koa2再到数据库知识。结合真实项目,从项目需求分析、接口和数据设计到业务开发,帮你打通前后端任督二脉,为就业加码。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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