JS对象属性查找问题:lookUpProfile函数嵌套if与return逻辑疑问
问题解答
1、为什么第二个if语句不嵌套在第一个if内部就无法正常运行?
第一个if (contacts[x].firstName === name)的作用是筛选出你要查找的目标联系人,只有找对了人,后续判断这个人有没有对应属性才有意义。
如果把第二个if挪到第一个if外面,逻辑就变成了:不管当前遍历到的联系人是不是你要找的,都会直接判断这个联系人的属性是否存在。比如你要查Harry的信息,遍历到第一个联系人Akira的时候,名字不匹配,但是还是会执行属性判断逻辑,直接返回Akira的对应属性或者「无此属性」的结果,完全不符合预期。
2、为什么第一个if语句不需要设置return返回值?
首先第一个if的代码块内部已经包含了所有匹配成功后的返回逻辑:只要匹配到了目标姓名,内部的if-else分支不管走哪条,都会执行return直接结束函数,不需要在第一个if外额外加返回值。
反过来想,如果在第一个if后面加了return,反而会出错:第一次遍历到第一个联系人的时候,不管姓名有没有匹配上,都会直接执行return终止循环,后面的三个联系人永远不会被遍历到,函数就只能查询第一个联系人的信息。
内容的提问来源于stack exchange,提问作者LightSolverCode
相关产品推荐
相关产品推荐

